zoukankan      html  css  js  c++  java
  • 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/

      <!-- Maven -->
      <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
      <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.2</version>
      </dependency>
    
      // Gradle
      // https://mvnrepository.com/artifact/commons-logging/commons-logging
      compile group: 'commons-logging', name: 'commons-logging', version: '1.2'

      (2) Spring Beans:http://repo1.maven.org/maven2/org/springframework/spring-beans/

      <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>5.1.9.RELEASE</version>
      </dependency>
    
      // https://mvnrepository.com/artifact/org.springframework/spring-beans
      compile group: 'org.springframework', name: 'spring-beans', version: '5.1.9.RELEASE'

      (3) Spring Core:http://repo1.maven.org/maven2/org/springframework/spring-core/

      (4) Spring JDBC:http://repo1.maven.org/maven2/org/springframework/spring-jdbc/

      (5) 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);
  • 相关阅读:
    块存储、文件存储、对象存储的区别
    brk 和 sbrk 区别
    【转】海量数据处理:十道面试题与十个海量数据处理方法总结
    C++ STL 里为什么不维护一个 size 成员变量?
    C++对象内存分布详解(包括字节对齐和虚函数表)
    虚函数实现原理
    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
    Jerasure 1.2A 中的 C 函数 tips
    C++ qsort() 函数调用时实参与形参不兼容的问题解决
    C语言位运算符:与、或、异或、取反、左移与右移详细介绍
  • 原文地址:https://www.cnblogs.com/NyanKoSenSei/p/11569822.html
Copyright © 2011-2022 走看看