Java 之 JDBCTemplate


Spring JDBC

  Spring 框架是對 JDBC 的簡單封裝,提供了一個 JDBCTemplate 對象簡化 JDBC 的開發。

  步驟

    1、導入 jar 包

        

    2、創建 JDBCTemplate 對象,依賴於數據源 DataSource。

       數據池之數據源創建。

JdbcTemplate template = new JdbcTemplate(ds);

    3、調用 JdbcTemplate 的方法來完成 CRUD 操作

  常用方法:

1、update():執行DML語句。增、刪、改語句。
2、queryForMap():查詢結果將結果集封裝為map集合,將列名作為key,將值作為value 將這條記錄封裝為一個map集合,(注意:這個方法查詢的結果集長度只能是1)
3、queryForList():查詢結果將結果集封裝為list集合(注意:將每一條記錄封裝為一個Map集合,再將Map集合裝載到List集合中)
4、query():查詢結果,將結果封裝成 JavaBean 對象,
  query的參數:RowMapper
         ① 創建一個匿名內部類 RowMapper,重寫里面的方法
         ② 一般使用 BeanPropertyRowMapper 實現類,可以完成數據到 JavaBean 的自動封裝
           new BeanPropertyRowMapper<類型>(類型.class)

5、queryForObject():查詢結果,將結果封裝成對象,一般用於聚合函數的查詢

  案例:

      在bookstores 數據庫中有一個book表,表結構和記錄如下:

    

    需求

    (1)修改1號數據的 num 為10;

    (2)添加一條記錄;

    (3)刪除剛剛添加的記錄;

    (4)查詢 id 為1的記錄,將其封裝為 Map 集合;

    (5)查詢所有記錄,將其封裝為 List;

    (6)查詢所有記錄,將其封裝為 Emp對象的 List 集合;

    (7)查詢總記錄數。

    代碼實現:

 1 import cn.ks.beans.Book;  2 import cn.ks.utils.JDBCUtils;  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 
 8 import java.sql.ResultSet;  9 import java.sql.SQLException;  10 import java.util.List;  11 import java.util.Map;  12 
 13 public class JdbcTemplateDemo {  14 
 15     //1獲取JDBCTemplate 對象
 16     private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());  17 
 18     /*
 19  * 1、修改1號數據的 num 為10;  20      */
 21  @Test  22     public void test1() {  23 
 24         // 2 定義SQL
 25         String sql = "update book set num=10 where id=1";  26         // 3 執行SQL
 27         int count = template.update(sql);  28 
 29  System.out.println(count);  30 
 31  }  32 
 33     /*
 34  * 2 添加一條記錄;  35      */
 36  @Test  37     public void test2() {  38         String sql = "insert into book values(?,?,?,?,?)";  39         int count = template.update(sql, null, "紅樓夢", 3, 33.0, 6);  40  System.out.println(count);  41  }  42 
 43     /*
 44  * 3、刪除剛剛添加的記錄;  45      */
 46  @Test  47     public void test3() {  48         String sql = "delete from book where id=?";  49         int count = template.update(sql, 3);  50  System.out.println(count);  51  }  52 
 53     /*
 54  * 4、查詢 id 為1的記錄,將其封裝為 Map 集合;  55  * 注意,這個方法查詢的結果長度只能是1  56      */
 57  @Test  58     public void test4() {  59 // String sql = "select * from book where id=? or id=?";  60 // Map<String, Object> map = template.queryForMap(sql, 1, 2);
 61         String sql = "select * from book where id=?";  62         Map<String, Object> map = template.queryForMap(sql, 1);  63  System.out.println(map);  64         //{id=1, name=西游記, kind=1, price=22.0, num=5}
 65  }  66 
 67     /*
 68  5、查詢所有記錄,將其封裝為 List;  69      */
 70  @Test  71     public void test5() {  72         String sql = "select * from book";  73         List<Map<String, Object>> list = template.queryForList(sql);  74 
 75         for (Map<String,Object> item : list) {  76  System.out.println(item);  77  }  78  }  79 
 80     /*
 81  6、查詢所有記錄,將其封裝為 Emp對象的 List 集合;  82      */
 83  @Test  84     public void test6() {  85         String sql = "select * from book";  86         List<Book> list = template.query(sql, new RowMapper<Book>() { //匿名內部類
 87  @Override  88             public Book mapRow(ResultSet resultSet, int i) throws SQLException {  89                 Book book = new Book();  90                 book.setId(resultSet.getInt("id"));  91                 book.setName(resultSet.getString("name"));  92                 book.setKind(resultSet.getString("kind"));  93                 book.setPrice(resultSet.getDouble("price"));  94                 book.setNum(resultSet.getInt("num"));  95 
 96                 return book;  97  }  98  });  99 
100         for (Book book : list) { 101  System.out.println(book); 102  } 103  } 104 
105     /*
106  6、查詢所有記錄,將其封裝為 Emp對象的 List 集合; 107      */
108  @Test 109     public void test7() { 110         String sql = "select * from book"; 111         List<Book> list = template.query(sql, new BeanPropertyRowMapper<Book>(Book.class)); 112         for (Book book : list) { 113  System.out.println(book); 114  } 115  } 116 
117     /*
118  * 7、查詢總記錄數。 119      */
120  @Test 121     public void test8() { 122         String sql = "select count(id) from book"; 123         Long aLong = template.queryForObject(sql, Long.class); 124  System.out.println(aLong); 125  } 126 }

 

    

 


免責聲明!

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



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