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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM