JDBCTemplate

1. 介绍

JDBCTemplate是Spring框架提供的对JDBC封装对象,目的是简化JDBC开发,是因为传统JDBC代码有着大量的重复。

2. 加载jar包

如果是Maven/Gradle项目则从Maven中央仓库配置,如果是要手动导入,则从FTP下载。

  1. Apache Commons Logging:http://repo1.maven.org/maven2/commons-logging/commons-logging/
	<dependency>
	    <groupId>commons-logging</groupId>
	    <artifactId>commons-logging</artifactId>
	    <version>1.2</version>
	  </dependency>
  1. Spring Beans:http://repo1.maven.org/maven2/org/springframework/spring-beans/
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-beans</artifactId>
	    <version>5.1.9.RELEASE</version>
	  </dependency>
  1. Spring Core:http://repo1.maven.org/maven2/org/springframework/spring-core/
  2. Spring JDBC:http://repo1.maven.org/maven2/org/springframework/spring-jdbc/
  3. Spring Transaction:http://repo1.maven.org/maven2/org/springframework/spring-tx/
    springframework的这几个包的区别就是<artifactId>标签不同。

3. 使用JDBCTemplate

配合JDBCUtils,JDBCTemplate提供了多种功能的封装,极大的简化了语句,只要关心SQL语句即可。

  1. 创建JDBCTemplate对象
    JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    可以将创建对象语句做成员变量,使用private修饰,这样类中每一个业务就不需要重复创建对象,可以直接使用template了。
  2. 使用JdbcTemplate提供的方法
    1. upadate(SQL语句, 参数列表):执行DML语句,执行添、删、改语句。返回影响行数。
      tring sql = "UPDATE user SET age = ? WHERE id = ?";
      int count = template.update(sql, 60, 1);
      
    2. queryForMap(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回被封装到Map集合的数据集。
      /* 注意,这个方法将列名和值作为键值对封装为Map集合
      只能查询唯一一条结果集,如果是多条结果一定不能使用这个方法 */
      String sql = "SELECT * FROM user WHERE id = ?";
      Map<String,Object> map = template.queryForMap(sql, 1);
      System.out.println(map);
      
    3. queryForList(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回被封装到List集合的数据集。
      /* 用这个方法可以打印多条封装成Map集合的结果集
      其实就是将每一条记录封装成一个Map集合,然后将Map集合装到List集合中 */
      String sql = "SELECT * FROM user WHERE id = ? OR id = ?";
      List<Map<String,Object>> list = template.queryForList(sql, 1, 2);
      for(Map<String,Object> stirngObjectMap : list) {
        System.out.println(stirngObjectMap);
      }
      
    4. query(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回的数据集封装到JavaBean对象。
      /* 使用提供的BeanPropertyRowMapper方法,完成数据到JavaBean的自动封装
      注意:domain类中的数据类型一定要是引用数据类型,否则可能会出错 */
      String sql = "SELECT * FROM user";
      List<类型> list = template.query(sql, new BeanPropertyRowMapper<类型>(类型.class));
      for (类型 user : list) {
          System.out.println(user);
      }
      
      /* domain 类 */
      public class User {
          private Integer id;
      
          public Integer getId() { return id; }
      
          public void setId(Integer id) { this.id = id; }
      
          @Override
          public String toString() {
              return "User{" + "id=" + id + '}';
          }
      }
      
    5. queryForObject(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回的数据集封装为对象。
      /* queryForObject方法一般都是执行聚合函数的方法 */
      String sql = "SELECT COUNT(id) from user";
      Long total = template.queryForObject(sql, Long.class);
      System.out.println(total);
      
posted @ 2019-09-22 22:55  苍凉温暖  阅读(1153)  评论(0编辑  收藏  举报