闫平平
写代码也要酷酷的!

导航

 

一:定义

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 }

 

posted on 2019-04-04 18:49  写代码也要酷酷的  阅读(172)  评论(0编辑  收藏  举报