一:定义
SpringJDBC是spring官方提供的一个持久层框架,对JDBC进行了封装,提供了一个JDBCTemplated对象简化JDBC的开发。但Spring本身不是一个orm框架,与hibernate比,它需要自己操作sql,手动映射字段关系,在保证灵活性的同时,势必会影响开发效率,如果需要完整的ORM框架,可以选择hibernate和spring Data Jpa.
二:使用步骤
1 导包
2 创建JDBCTemplate 对象 依赖于DataSource
3 调用JDBCTemplate 方法 CRUD
3.1 update 增 删 改 DML语句
3.2 queryForMap() 查询结果封装为map 集合 将列名key value
3.3 queryForList() 查询结果封装List 集合
3.4 query() 查询结果 JavaBean对象
3.5queryForObject() 将结果封装成对象
三:JdbcTemplate 入门示例
1 package cn.lijun.jdbctemplate; 2 3 import cn.lijun.domain.Emp; 4 import cn.lijun.utils.JDBCUtils; 5 import org.junit.Test; 6 import org.springframework.jdbc.core.BeanPropertyRowMapper; 7 import org.springframework.jdbc.core.JdbcTemplate; 8 import org.springframework.jdbc.core.RowMapper; 9 10 import java.sql.Date; 11 import java.sql.ResultSet; 12 import java.sql.SQLException; 13 import java.util.List; 14 import java.util.Map; 15 16 public class Demo2JDBCTemplate { 17 18 //Junit单元测试,可以让方法独立执行 19 20 21 //1. 获取JDBCTemplate对象 22 private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); 23 /** 24 * 1. 修改1号数据的 salary 为 10000 25 */ 26 @Test//我被执行了 27 public void test1(){ 28 29 //2. 定义sql 30 String sql = "update emp set salary = 10000 where id = 1001"; 31 //3. 执行sql 32 int count = template.update(sql); 33 System.out.println(count); 34 } 35 36 /** 37 * 2. 添加一条记录 38 */ 39 @Test 40 public void test2(){ 41 String sql = "insert into emp(id,ename,dept_id) values(?,?,?)"; 42 int count = template.update(sql, 1015, "郭靖", 10); 43 System.out.println(count); 44 45 } 46 47 /** 48 * 3.删除刚才添加的记录 49 */ 50 @Test 51 public void test3(){ 52 String sql = "delete from emp where id = ?"; 53 int count = template.update(sql, 1015); 54 System.out.println(count); 55 } 56 57 /** 58 * 4.查询id为1001的记录,将其封装为Map集合 59 * 注意:这个方法查询的结果集长度只能是1 DQL语句查询 60 */ 61 @Test 62 public void test4(){ 63 String sql = "select * from emp where id = ? or id = ?"; 64 Map<String, Object> map = template.queryForMap(sql, 1001,1002); 65 System.out.println(map); 66 67 68 } 69 70 /** 71 * 5. 查询所有记录,将其封装为List 72 */ 73 @Test 74 public void test5(){ 75 String sql = "select * from emp"; 76 List<Map<String, Object>> list = template.queryForList(sql); 77 78 for (Map<String, Object> stringObjectMap : list) { 79 System.out.println(stringObjectMap); 80 } 81 } 82 83 /** 84 * 6. 查询所有记录,将其封装为Emp对象的List集合//ctrl+p 85 */ 86 87 88 @Test 89 public void test6_2(){ 90 String sql = "select * from emp"; 91 List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class)); 92 for (Emp emp : list) { 93 System.out.println(emp); 94 } 95 } 96 97 /** 98 * 7. 查询总记录数 99 */ 100 101 @Test 102 public void test7(){ 103 String sql = "select count(id) from emp"; 104 Long total = template.queryForObject(sql, Long.class); 105 System.out.println(total); 106 } 107 108 }