jdbcTemplate的一些常用方法


前言

最近的項目中由於只進行查詢,所以使用了jdbcTemplate來直接操作sql進行持久層的操作,初次接觸jdbcTemplate,從最開始的什么都不知道到現在基本方法都大致知道什么意思,特此記錄一下

正文

jdbcTemplate方法常用的大約有這個幾個

1. queryForInt()/queryForLong()
2. queryForObject()
3. queryForList()
4. queryForMap()
5. query()
1. queryForInt()/queryForLong()

使用queryForInt()主要是為了獲取數據庫中記錄總數,獲取指定條件的記錄數等,不需要對應列名,只需要返回一個數據即可.queryForLong()是同理的.

如果你想查詢到結果並命名的話,你可以使用queryForMap(),查詢到的值更改列名為別名,然后使用map.get("別名")來獲取.

2. queryForObject()

其實本質上queryForObject()和queryForInt()是一直的,只不過可以返回一個非int的值,比如你查詢指定id的對象的某一個屬性,可以使用Object進行接收,而不能使用int來接收.

(6-25更新)舉個例子:

String sql = "SELECT name FROM user WHERE id = ?";
return jdbcTemplate.queryForObject(sql,String.class,id);  
//需要注意的是:第一個參數:SQL語句,第二個參數:你查詢的結果的返回值類型,第三個參數是:你傳入的參數
3.  queryForList()

在我們需要得到一個數據集合的時候,我們通常使用queryForList()進行。返回的結果是一個List<Map>結構的集合。其中一個Map代表了一行數據,使用列名作為key,使用值作為value。

並且queryForList()會默認自動封裝。不需要手動進行數據封裝。

4. queryForMap()

queryForMap()是查詢一條數據的時候使用的封裝。將列名作為key,值作為value。封裝成一個map返回結果。

需要特別注意的是:因為queryForMap()是要求必須要有結果集的,如果查詢出的結果是null,則會報錯!如果不確定是否有結果集,請使用query()進行查詢,然后獲取數據。(7-4更新)

5. query()

query()進行查詢的時候,必須自行對結果集進行取出並封裝。

優點是:數據更加靈活,如果你想在結果集中加上一個固定值作為標記,甚至自己自定義key的值,對value的值進行計算等等,都可以,非常靈活。

缺點是:你需要手動進行封裝數據。

代碼如下:

 StringBuilder sql = new StringBuilder();
        sql.append("SELECT *FROM USER");
 List<Object> paramList = new ArrayList<>();
if (!StringUtils.isEmpty(ID)) {
            sql.append(" AND TI.ID = ? ");
            paramList.add(ID);
        }
return this.jdbcTemplate.query(sql.toString(),
                (rs, rowNum) -> {
                    Map<String, Object> dataMap = new HashMap<>();
                    dataMap.put("L1", rs.getString("L1"));
                    dataMap.put("L2", rs.getInt("L2") + 100); //對查詢出來的結果進行計算,修改等等操作
                    dataMap.put("L3", 1);    //我添加了一個固定列到結果集中
                    return dataMap;
                }, paramList.toArray());

 

后記

總的來說,jdbcTemplate對於查詢來說,如果你對sql比較精通,使用起來非常方便,靈活。

 


免責聲明!

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



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