概念
Spring 框架对 JDBC 的简单封装,提供了一个 JDBCTemplate 对象简化 JDBC 的开发。
步骤
1.导入 jar 包。
2.创建 JdbcTemplate 对象。依赖于数据源DataSource
1
| JdbcTemplate template = new JdbcTemplate(ds);
|
3.调用JdbcTemplate的方法来完成CRUD的操作。
- update():执行DML语句。增、删、改语句。
- queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合。
- queryForList():查询结果将结果集封装为list集合。
- 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中。
- query():查询结果,将结果封装为JavaBean对象。
- query的参数:RowMapper
- 一般使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装。
- new BeanPropertyRowMapper<类型>(类型.class)
- queryForObject:查询结果,将结果封装为对象。
4.示例
需求:
- 修改1号数据的 salary 为 10000。
- 添加一条记录。
- 删除刚才添加的记录。
- 查询id为1的记录,将其封装为Map集合。
- 查询所有记录,将其封装为List。
- 查询所有记录,将其封装为Emp对象的List集。
- 查询总记录数。
数据表:
代码:
1 2
| private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
|
1 2 3 4 5 6 7 8
| public void test1(){ String sql = "update emp set salary = 10000 where id = 1001"; int count = template.update(sql); System.out.println(count); }
|
1 2 3 4 5 6
| public void test2(){ String sql = "insert into emp(id,ename,dept_id) values(?,?,?)"; int count = template.update(sql, 1015, "郭靖", 10); System.out.println(count); }
|
1 2 3 4 5 6
| public void test3(){ String sql = "delete from emp where id = ?"; int count = template.update(sql, 1015); System.out.println(count); }
|
1 2 3 4 5 6 7 8
|
public void test4(){ String sql = "select * from emp where id = ?"; Map<String, Object> map = template.queryForMap(sql, 1001); System.out.println(map); }
|
1 2 3 4 5 6 7
| public void test5(){ String sql = "select * from emp"; List<Map<String, Object>> list = template.queryForList(sql); for (Map<String, Object> stringObjectMap : list) System.out.println(stringObjectMap); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public void test6(){ String sql = "select * from emp"; List<Emp> list = template.query(sql, new RowMapper<Emp>() { @Override public Emp mapRow(ResultSet rs, int i) throws SQLException { Emp emp = new Emp(); int id = rs.getInt("id"); String ename = rs.getString("ename"); int job_id = rs.getInt("job_id"); int mgr = rs.getInt("mgr"); Date joindate = rs.getDate("joindate"); double salary = rs.getDouble("salary"); double bonus = rs.getDouble("bonus"); int dept_id = rs.getInt("dept_id"); emp.setId(id); emp.setEname(ename); emp.setJob_id(job_id); emp.setMgr(mgr); emp.setJoindate(joindate); emp.setSalary(salary); emp.setBonus(bonus); emp.setDept_id(dept_id); return emp; } }); for (Emp emp : list) { System.out.println(emp); } }
|
重点掌握
1 2 3 4 5 6 7 8
| public void test6(){ String sql = "select * from emp"; List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class)); for (Emp emp : list) { System.out.println(emp); } }
|
1 2 3 4 5 6
| public void test7(){ String sql = "select count(id) from emp"; Long total = template.queryForObject(sql, Long.class); System.out.println(total); }
|