JDBC(三)—— JDBCTemplate

一、简介

Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的封装。

二、步骤

1. 导入jar包

2. 创建JdbcTemplate对象。依赖于数据源DataSource

  JdbcTemplatetemplate = new JdbcTemplate(ds);

3. 调拥JdbcTemplate的方法来完成CRUD的操作

  update():执行DML语句:增删改

  queryForMap():查询结果将结果集封装为Map集合

    注意:这个方法查询的结果集长度只能是1

  queryForList():查询结果将结果封装为List方法

    注意:将每一条记录封装成一个Map集合,再将Map集合装载到List集合中

  query():查询结果,将结果封装为JavaBean对象

    query的参数:RowMapper

      一般我们使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装。

      new BeanPropertyRowMapper<类型>(类型.class)

  queryForObject():查询结果,将结果封装为对象

      一般用于聚合函数的查询。

 三、代码示例

 1 package cn.itcast.jdbctemplate;
 2 
 3 import org.springframework.jdbc.core.JdbcTemplate;
 4 
 5 import cn.itcast.datasource.utils.JDBCUtils;
 6 
 7 /**
 8  * JdbcTemplate入门
 9  */
10 public class JdbcTemplateDemo1 {
11     public static void main(String[] args) {
12         //1.导入jar包
13 
14         //2.创建JDBCTemplate对象
15         JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
16         //3.调用方法
17         String sql = "update account set balance = 5000 where id = ?";
18         int count = template.update(sql,3);
19         System.out.println(count);
20     }
21 }
View Code

 

四、DML语句

1.修改记录操作

 

2. 添加记录操作

 

3. 删除记录操作

 

五、DQL语句

1. 查询id=1的记录,将其封装成Map集合

 

2. 查询所有记录,将其封装为List

 

3. 查询所有记录,将其封装为Emp对象的List集合

 

4.查询所有记录数

 

示例代码:

  1 package cn.itcast.jdbctemplate;
  2 
  3 import org.junit.Test;
  4 import org.springframework.jdbc.core.BeanPropertyRowMapper;
  5 import org.springframework.jdbc.core.JdbcTemplate;
  6 import org.springframework.jdbc.core.RowMapper;
  7 import org.springframework.lang.Nullable;
  8 
  9 import java.sql.ResultSet;
 10 import java.sql.SQLException;
 11 import java.util.Date;
 12 import java.util.List;
 13 import java.util.Map;
 14 
 15 import cn.itcast.datasource.utils.JDBCUtils;
 16 import cn.itcast.domain.Emp;
 17 
 18 public class JdbcTemplateDemo2 {
 19 
 20     //1.获取JDBCTemplate对象
 21     private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
 22     //JUnit单元测试,可以让方法独立执行
 23 
 24     /**
 25      * 修改id=1的记录,salary为10000
 26      */
 27     @Test
 28     public void test1(){
 29         //1.获取JDBCTemplate对象
 30         JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
 31         //2.定义SQL
 32         String sql = "update emp set salary = 10000 where id = 1";
 33         //3. 执行SQL
 34         int count = template.update(sql);
 35         System.out.println(count);
 36     }
 37 
 38     /**
 39      * 添加一条记录
 40      */
 41     @Test
 42     public void test2(){
 43 
 44         //2.定义SQL
 45         String sql = "insert into emp(id,name,gender,salary,join_date,dept_id) values(?,?,?,?,?,?)";
 46         //3. 执行SQL
 47         int count = template.update(sql,6,"施耐庵","男",30000,"2010-9-12",3);
 48         System.out.println(count);
 49     }
 50 
 51     /**
 52      * 删除一条记录
 53      */
 54     @Test
 55     public void test3(){
 56         String sql = "delete from emp where id = ?";
 57         int count = template.update(sql,6);
 58         System.out.println(count);
 59     }
 60 
 61     /**
 62      * 查询id=1的记录,并将其封装为Map集合
 63      * 注意:这个方法查询的结果集长度只能为1
 64      */
 65     @Test
 66     public void test4(){
 67         String sql = "select * from emp where id = ?";
 68         Map<String, Object> map =  template.queryForMap(sql,1);
 69         System.out.println(map);
 70 
 71     }
 72 
 73     /**
 74      * 查询所有记录,将其封装为List
 75      * 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
 76      */
 77     @Test
 78     public void test5(){
 79         String sql = "select * from emp";
 80         List<Map<String,Object>> list = template.queryForList(sql);
 81         for(Map<String, Object> stringObjectMap : list){
 82             System.out.println(stringObjectMap);
 83         }
 84     }
 85 
 86     /**
 87      * 查询所有记录,将其封装为Emp对象的List集合
 88      */
 89     @Test
 90     public void test6(){
 91         String sql = "select * from emp";
 92         List<Emp> list = template.query(sql, new RowMapper<Emp>() {
 93 
 94             @Nullable
 95             @Override
 96             public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
 97                 Emp emp = new Emp();
 98                 int id = resultSet.getInt("id");
 99                 String name = resultSet.getString("name");
100                 String gender = resultSet.getString("gender");
101                 double salary = resultSet.getDouble("salary");
102                 Date join_date = resultSet.getDate("join_date");
103                 int dept_id = resultSet.getInt("dept_id");
104 
105                 emp.setId(id);
106                 emp.setName(name);
107                 emp.setGender(gender);
108                 emp.setSalary(salary);
109                 emp.setJoin_date(join_date);
110                 emp.setDept_id(dept_id);
111                 return emp;
112             }
113         });
114 
115         for(Emp emp : list){
116             System.out.println(emp);
117         }
118     }
119 
120     /**
121      * 查询所有记录,将其封装为Emp对象的List集合
122      */
123     @Test
124     public void test6_2(){
125         String sql = "select * from emp";
126         List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
127         for(Emp emp : list){
128             System.out.println(emp);
129         }
130     }
131 
132     /**
133      * 查询总记录数
134      */
135     @Test
136     public void test7(){
137         String sql = "select count(id) from emp";
138         Long total = template.queryForObject(sql, Long.class);
139         System.out.println(total);
140     }
141 }
View Code

 

posted @ 2020-08-13 18:11  海边拾贝seebit  阅读(188)  评论(0编辑  收藏  举报