Spring JDBC
1.Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
2.步骤:
1. 导入jar包(要有JDBCUtils 和 druid.properties 以及相关 jar )
2. 创建JdbcTemplate对象。依赖于数据源DataSource
* JdbcTemplate template = new JdbcTemplate(ds);
3. 调用JdbcTemplate的方法来完成CRUD的操作
* update():执行DML语句。增、删、改语句
* queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这记录封装为一个map集合
* 注意:这个方法查询的结果集长度只能是1
* queryForList():查询结果将结果集封装为list集合
* 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
* query():查询结果,将结果封装为JavaBean对象
* query的参数:RowMapper
* 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
* new BeanPropertyRowMapper<类型>(类型.class)
* queryForObject:查询结果,将结果封装为对象
* 一般用于聚合函数的查询
测试代码:
1.修改
1 public void test1() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 //修改 4 String sql = "update account set uname = '巴菲特' where id = 4"; 5 jdbcTemplate.update(sql); 6 }
2.插入
1 public void test2() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 //插入 4 String sql = "insert into account values(null,?,?,?)"; 5 jdbcTemplate.update(sql, "李嘉诚", "789852", "789852@1"); 6 }
3.删除
1 public void test3() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 //删除 4 String sql = "delete from account where id = 3"; 5 jdbcTemplate.update(sql); 6 }
4.查询单个记录
1 public void test4() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 //查询一行 4 String sql = "select * from account where id = 1"; 5 Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql); 6 System.out.println(stringObjectMap); 7 }
5.查询多个记录
1 public void test5() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 //查询多行 4 String sql = "select * from account"; 5 List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql); 6 for (Map<String, Object> map : maps) { 7 System.out.println(map); 8 } 9 }
6.使用封装对象类进行查询多个记录
Account类
1 public class Account { 2 private int id; 3 private String uname; 4 private String password; 5 private String email; 6 7 public int getId() { 8 return id; 9 } 10 11 public void setId(int id) { 12 this.id = id; 13 } 14 15 public String getUname() { 16 return uname; 17 } 18 19 public void setUname(String uname) { 20 this.uname = uname; 21 } 22 23 public String getPassword() { 24 return password; 25 } 26 27 public void setPassword(String password) { 28 this.password = password; 29 } 30 31 public String getEmail() { 32 return email; 33 } 34 35 public void setEmail(String email) { 36 this.email = email; 37 } 38 39 @Override 40 public String toString() { 41 return "Account{" + 42 "id=" + id + 43 ", uname='" + uname + '\'' + 44 ", password='" + password + '\'' + 45 ", email='" + email + '\'' + 46 '}'; 47 } 48 }
查询:
1 public void test6() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 String sql = "select * from account"; 4 //使用封装对象实现查询 5 List<Account> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Account>(Account.class)); 6 for (Account account : list) { 7 System.out.println(account); 8 } 9 }
6.查询记录行数
1 public void test7() { 2 JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); 3 //查询记录数 4 String sql = "select count(id) from account"; 5 Long aLong = jdbcTemplate.queryForObject(sql, Long.class); 6 System.out.println(aLong); 7 }

浙公网安备 33010602011771号