1.JDBCTemplate介绍
- Spring框架对JDBC的一个简单的封装。提供了一个JDBCTemplate对象简化JDBC的开发
- 步骤:
- 1.导入jar包
- 2.创建JDBCTemplate对象,依赖于数据源DataSource
- JdbcTemplate template = new JdbcTemplate(ds);
- 调用方法来完成crud操作即可
- update():执行增删改语句,执行DML语句
- queryForMap():查询结果将结果封装为map集合
- 注意:这个方法查询的结果集长度只能为1
- queryForList():查询结果将结果封装为list集合
- 注意:将每一条记录封装为一个map集合,再将map集合装载到list集合中
- query():将结果封装为一个javaBean对象
- query的参数:RowMapper
- 一般使用它的实现类BeanPropertyRowMapper,可以完成数据的自动封装
- 语法:new BeanPropertyRowMapper<类型>(类型.class)
- query的参数:RowMapper
- queryForObject():将结果封装为对象
- 一般用于聚合函数的查询
2.JDBCTemplate的快速入门
- 示例:
public class JdbcTemplateDemo{
public static void main(String[] args){
//1.导入jar包
//2.创建JdbcTemplate对象
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
//3.调用方法
String sql = "update account set balance = 5000 where id = ?";
template.update(sql, 3);//修改id 为3 的记录的balance为5000
}
}
3.一些小练习
-
需求:
- 1.修改1号数据的salary为10000
- 2.添加一条记录
- 3.删除添加的记录
- 4.查询id为1的记录,将其封装为map集合
- 5.查询所有的记录,将其封装为list集合
- 6.查询所有的记录,将其封装为emp对象的list集合
- 7.查询总的记录数
-
在这里省略掉emp的实体类
public class JdbcTemplateDemo{
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
//每个test对应一个需求
@Test
public void test1(){
String sql = "update emp set salary = 10000 where id = ?";
int count = template.update(sql, 1);//1
}
@Test
public void test2(){
String sql = "insert into emp(id, name, salary) values(?,?,?)";
int count = template.update(sql, 15, "张三", 15000);//1
}
@Test
public void test3(){
String sql = "delete from emp where id = ?";
int count = template.update(sql, 15);//1
}
@Test
public void test4(){
String sql = "select * from emp where id = ?";
Map<String, Object> map = template.queryForMap(sql, 1);
}
@Test
public void test5(){
String sql = "select * from emp";
List<Map<String, Object>> list = template.queryForList(sql);
}
@Test
public void test6(){
String sql = "select * from emp";
List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>());
}
@Test
public void test7(){
String sql = "select count(id) from emp";
long total= template.queryObject(sql, Long.class);
}
}