Spring JDBCTemplate原理及使用实例

作者:.长卿 时间:2023-03-11 09:47:19 

一:JDBCTemplate简介

Spring为各种持久化技术提供了简单操作的模板和回调API:

ORM持久化技术模板类
原生JDBCorg.springframework.jdbc.core.JdbcTemplate
Hibernate5.0org.springframework.orm.hibernate5.HibernateTemplate
IBatis(MyBatis)org.springframework.orm.ibatis.SqlMapClientTemplate
JPAorg.springfrmaework.orm.jpa.JpaTemplate

其中,对于原生的JDBC编程,Spring提供了JDBCTemplate,对jdbc操作进行了一系列封装,使得jdbc编程更加简单。

二:引入jar包或添加依赖

Spring JDBCTemplate原理及使用实例

数据库驱动包则按需引入。

三:创建数据库连接配置文件

 jdbc.user=root
 jdbc.password=123456
 jdbc.driverClass=com.mysql.jdbc.Driver
 jdbc.jdbcUrl=jdbc\:......

四:Spring托管

在Spring配置文件中,注入dataSource,从配置文件中获取内容进行bean的初始化。


<context:property-placeholder location="classpath:db.properties"/> //指定数据库连接配置文件
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> //托管dataSource bean
 <property name="user" value="${jdbc.user}"></property> //获取配置文件内容对dataSource进行初始化
 <property name="password" value="${jdbc.password}"></property>
 <property name="driverClass" value="${jdbc.driverClass}"></property>
 <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> //托管jdbcTemplate,引用dataSource
 <property name="dataSource" ref="dataSource"></property>
</bean>

五:在代码中使用

1:通过Spring配置文件启动IOC容器

//启动IoC容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

2:在IOC容器获取jdbcTemplate实例

//获取IoC容器中JdbcTemplate实例
JdbcTemplate jdbcTemplate=(JdbcTemplate) ctx.getBean("jdbcTemplate");

3:使用jdbcTemplate调用方法执行数据库操作

JdbcTemplate主要提供以下五大方法:

execute方法:可以用于执行任何SQL语句。

update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

query方法及queryForXXX方法:用于执行查询相关语句;

call方法:用于执行存储过程、函数相关语句。

3.1)通过 update 进行插入

String sql="insert into user (name,deptid) values (?,?)";
int count= jdbcTemplate.update(sql, new Object[]{"caoyc",3});

3.2)通过 update 进行修改

String sql="update user set name=?,deptid=? where id=?";
jdbcTemplate.update(sql,new Object[]{"zhh",5,51});

3.3)通过 update 进行删除

String sql="delete from user where id=?";
jdbcTemplate.update(sql,51);

3.4)批量插入、修改、删除


String sql="insert into user (name,deptid) values (?,?)";

List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add(new Object[]{"caoyc",6});
batchArgs.add(new Object[]{"zhh",8});
batchArgs.add(new Object[]{"cjx",8});

jdbcTemplate.batchUpdate(sql, batchArgs);

六:在DAO层使用

数据库操作一般结合ORM进行使用。

1:首先定义实体类


package com.proc;

public class User {
 private Integer id;
 private String name;
 private Integer deptid;
 public Integer getId() {
   return id;
 }
 public void setId(Integer id) {
   this.id = id;
 }
 public String getName() {
   return name;
 }
 public void setName(String name) {
   this.name = name;
 }
 public Integer getDeptid() {
   return deptid;
 }
 public void setDeptid(Integer deptid) {
   this.deptid = deptid;
 }

public String toString() {
   return "User [id=" + id + ", name=" + name + ", deptid=" + deptid + "]";
 }
}

2:然后定义该实体类的DAO类


package com.proc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {

@Autowired
 private JdbcTemplate jdbcTemplate;

public User get(int id){
   String sql="select id,name,deptid from user where id=?";
   RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
   return jdbcTemplate.queryForObject(sql, rowMapper,id);
 }
}

在DAO类中,定义对应实体实例的增删查改操作方法,在方法体中,使用jdbcTemplate。

3:在service层,通过dao实例调用方法,执行数据操作。

UserDao userDao=(UserDao) ctx.getBean("userDao");
System.out.println(userDao.get(53));

来源:https://www.cnblogs.com/ygj0930/p/11281055.html

标签:Spring,JDBC,Template
0
投稿

猜你喜欢

  • C语言二叉树常见操作详解【前序,中序,后序,层次遍历及非递归查找,统计个数,比较,求深度】

    2021-09-30 08:41:23
  • Struts中使用validate()输入校验方法详解

    2023-03-02 19:10:41
  • C# 扩展方法的使用

    2022-04-05 14:46:24
  • Android实现简易计步器功能隔天步数清零查看历史运动纪录

    2021-07-24 00:37:02
  • FFmpeg 音频可视化解码流程详解

    2023-04-03 00:41:54
  • SpringBoot 2.x 整合Lombok的方法示例

    2022-03-15 17:43:35
  • Java异常的处理机制

    2023-12-03 15:33:19
  • 在Kotlin开发中如何使用集合详解

    2022-03-06 02:22:30
  • java之函数式接口解读

    2022-07-16 16:32:46
  • C#编程实现统计文件夹内文件和隐藏文件的方法示例

    2022-09-29 16:09:38
  • C#最简单的字符串加密解密方法

    2022-10-30 12:46:36
  • Java实现超市会员管理系统

    2021-10-01 08:39:28
  • Android 二维码 生成和识别二维码 附源码下载

    2023-05-01 12:45:01
  • 用C#缩小照片上传到各种空间的具体方法

    2022-03-28 02:29:18
  • C#实现图片上传(PC端和APP)保存及 跨域上传说明

    2022-11-10 17:05:11
  • 关于Java8新特性Optional类的详细解读

    2023-12-06 00:38:53
  • Java数据结构之AC自动机算法的实现

    2023-08-31 07:23:57
  • SpringBoot整合mybatis-plus进阶详细教程

    2023-11-27 05:13:12
  • C#验证身份证的函数

    2022-06-16 04:49:37
  • spring 注解如何开启声明式事务

    2023-04-09 23:07:42
  • asp之家 软件编程 m.aspxhome.com