jdbcTemplate的一些經常使用方法

前言

最近的項目中因爲只進行查詢,因此使用了jdbcTemplate來直接操做sql進行持久層的操做,初次接觸jdbcTemplate,從最開始的什麼都不知道到如今基本方法都大體知道什麼意思,特此記錄一下sql

正文

jdbcTemplate方法經常使用的大約有這個幾個數據庫

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

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

若是你想查詢到結果並命名的話,你可使用queryForMap(),查詢到的值更改列名爲別名,而後使用map.get("別名")來獲取.ui

2. queryForObject()

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

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

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

在咱們須要獲得一個數據集合的時候,咱們一般使用queryForList()進行。返回的結果是一個List<Map>結構的集合。其中一個Map表明了一行數據,使用列名做爲key,使用值做爲value。code

而且queryForList()會默認自動封裝。不須要手動進行數據封裝。對象

4. queryForMap()

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

須要特別注意的是:由於queryForMap()是要求必需要有結果集的,若是查詢出的結果是null,則會報錯!若是不肯定是否有結果集,請使用query()進行查詢,而後獲取數據。(7-4更新)get

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比較精通,使用起來很是方便,靈活。