1、什么是Spring JDBC
因为JDBC的操作过程比较烦索,并且操作步骤大多相对固定,所以很多框架都对其进行了封装与优化。其中著名的Spring框架也对JDBC做了简单封装。
Spring框架提供了一个JdbcTemplate类简化JDBC的开发,它的特点是:简单、方便,这个技术俗称Spring JDBC技术。
Spring JDBC理解为Spring框架对持久层JDBC操作进行了封装与优化,化繁琐为简单实用,即解决持久层的技术问题。
2、Spring JDBC的作用
Spring JDBC技术中最为核心的类是JdbcTemplate类。
JdbcTemplate类负责数据库资源管理和错误处理,大大简化了开发人员对数据库的操作,使得开发人员可以从繁琐的数据库操作中解脱出来,从而将更多精力投入到编写业务逻辑当中。
3、使用Spring JDBC
Spring JDBC常用API:
org.springframework.jdbc.core.JdbcTemplate类:
方法作用说明
public JdbcTemplate(DataSource dataSource)创建JdbcTemplate对象需要依赖连接池
JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
public int update(String sql, Object... args) throws DataAccessException执行非查询操作如果是增删改操作,返回值表示本次操作影响表中多少条记录,如果是创建,修改,删除操作,返回0
int count = jdbcTemplate.update(sql, params);
public <T> List<T> query(String sql, RowMapper<T> rowMapper,Object... args) throws DataAccessException将查询结果封装为JavaBean对象,以List<JavaBean>形式返回RowMapper是一个接口,一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装 ,原理是根据表中字段名和JavaBean中属性名一一对应关系进行封装的。
List<Emp> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class), params);
public <T> T queryForObject(String sql, Class<T> requiredType, Object... args)throws DataAccessException将查询结果封装为对象一般用于聚合函数的查询
long count = jdbcTemplate.queryForObject(sql, long.class, params);
需求:
将user表中id=1的密码修改为333333
结果:
修改前修改后
步骤:
01导入jar包和配置文件
Spring JDBC的jar包:
commons-logging-1.2.jar
spring-beans-5.0.0.RELEASE.jar
spring-core-5.0.0.RELEASE.jar
spring-jdbc-5.0.0.RELEASE.jar
spring-tx-5.0.0.RELEASE.jar
Mysql数据库的jar包:
mysql-connector-java-5.1.38-bin.jar
Druid连接池的jar包和配置文件:
druid-1.0.9.jar
src/druid.properties
02导入DruidUtil工具类
03创建JdbcTemplate对象,依赖于连接池
04创建sql语句,如果有值,可以用占位符?号替代
05如果sql语句中有占位符?号,必须用一维Object[]为每个占位符?号依次赋值
06执行sql语句,并接收结果
07处理结果
代码:
package com.it.jdbctemplate;
import com.util.JdbcUtil;
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateDemo01 {
public static void main(String[] args) {
//01导入jar包和配置文件
//02导入DruidUtil工具类
//03创建JdbcTemplate对象,依赖于连接池
JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
//04创建sql语句,如果有值,可以用占位符?号替代
String sql = "UPDATE USER SET PASSWORD=? WHERE id=?";
//05如果sql语句中有占位符?号,必须用一维Object[]为每个占位符?号依次赋值
Object[] params = {"333333",1};
//06执行sql语句,并接收结果
int count = jdbcTemplate.update(sql, params);
//07处理结果
if (count > 0) {
System.out.println("操作成功");
} else {
System.out.println("操作失败");
}
}
}
源码如下:
1 @NonNull可以标注在方法、字段、参数之上,表示对应的值不可以为空
2 @Nullable注解可以标注在方法、字段、参数之上,表示对应的值可以为空
4、JdbcTemplate类方法总结