JDBCTemplate介绍
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
JDBCTemplate使用步骤:
1.导入JDBCTemplate所需要的jar包
2.创建JdbcTemplate对象。依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(ds);
3.定义SQL语句,可以使用占位符
4.调用JdbcTemplate的方法来完成CRUD的操作(传入SQL及占位符所对应的参数)
JDBCTemplate的方法
①update():执行DML语句。增、删、改语句
@Test
public void test1(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "update emp set salary = 999 where id = ?";
int update1 = template.update(sql, 1001);
System.out.println(update1);
}
@Test
public void test2(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";
int update2 = template.update(sql, 1015, "wdh", 10);
System.out.println(update2);
}
@Test
public void test4(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "select * from emp where id = ?";
Map<String, Object> map1 = template.queryForMap(sql, 1001);
System.out.println(map1);
}
②queryForMap():查询结果将结果集封装为map集合
将列名作为key,将值作为value 将这条记录封装为一个map集合
@Test
public void test5(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "select * from emp";
List<Map<String, Object>> list = template.queryForList(sql);
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
③queryForList():查询结果将结果集封装为list集合
注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
@Test
public void test6(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "select * from emp";
List<Emp> query = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for (Emp emp : query) {
System.out.println(emp);
}
}
④query():查询结果,将结果封装为JavaBean对象
query的参数:RowMapper
(一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装new BeanPropertyRowMapper<类型>(类型.class))
BeanPropertyRowMapper使用浅析: https://blog.csdn.net/weixin_43402591/article/details/105644524
@Test
public void test6(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "select * from emp";
List<Emp> query = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for (Emp emp : query) {
System.out.println(emp);
}
}
⑤queryForObject:查询结果,将结果封装为对象
一般用于聚合函数的查询(聚合函数:将一列数据作为一个整体进行纵向的计算)
@Test
public void test7(){
// 获取JDBCTemplate对象(从druid的工具类中获取连接池对象)
JdbcTemplate template = new JdbcTemplate(jdbcUtils.getDatasource());
String sql = "select count(id) from emp";
Long total = template.queryForObject(sql, long.class);
System.out.println(total);
}