Spring JDBCTemplate使用

 使用jdbcTemplate查詢數據的時候可以使用queryForXXX等方法。下面我們就一一解析一下:  
1、jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong()  
--使用queryForInt返回user表中的記錄數量,queryForInt搭配這樣的sql可以在分頁的時候計算總記錄數  
jdbcTemplate.queryForInt("select count(*) from user");  
  
2、jdbcTemplate.queryForObject()  
--本質上和queryForInt相同,只是可以返回不同的對象,例如返回一個String對象  
String name = (String) jdbcTemplate.queryForObject(  --3個參數,1、sql 2、要傳遞的參數數組 3、返回來的對象class  
"SELECT name FROM USER WHERE id = ?",    
new Object[] {id},    
java.lang.String.class);  
  
3、jdbcTemplate.queryForList(???)  
--返回一個裝有map的list,每一個map是一條記錄,map裏面的key是字段名  
List rows = jdbcTemplate.queryForList("SELECT * FROM user");  --得到裝有map的list  
for(int i=0;i<rows.size();i++){                   --遍歷  
Map userMap=rows.get(i);  
System.out.println(userMap.get("id"));    
System.out.println(userMap.get("name"));    
System.out.println(userMap.get("age"));  
}  
  
  
4、jdbcTemplate.queryForMap(SQL)  
--這個查詢只能是查詢一條記錄的查詢,返回一個map,key的值是column的值  
Map map = jdbcTemplate.queryForMap("select count(*) as keyval from user");  
map.get("keyval")  
  
  
5、jdbcTemplate.queryForRowSet(???)  
--返回一個RowSet   然後調用.getString或者getInt等去取值  
  
  
  
  
6、jdbc1.query(sql, new RowCallbackHandler()  
--返回一個ResultSet對象, processRow有自動循環的機制,它會自動執行processRow中的語句直到  
--rs的size執行完了爲止。我們可以在這其中用list完成對象的轉移,只不過list要用final來修飾  
jdbc1.query(sql, new RowCallbackHandler() { //editing  
            public void processRow(ResultSet rs) throws SQLException {  
        VideoSearch vs = new VideoSearch();  
        vs.setRECORDINGFILENAME(rs.getString("RECORDINGFILENAME"));  
        vs.setCALLID(rs.getString("CALLID"));  
        list.add(vs);  
  
    }  
    }  
  
說明:  
JDBCTemplate的使用方法:  
在ApplicationContext.xml中定義一個jdbcTemplate的節點,使用POJO注入,獲得注入後可以執行操作  
不需要繼承什麼基類  
  
<bean id="jdbcTemplate"  
class="org.springframework.jdbc.core.JdbcTemplate">              
      <property name="dataSource" ref="dataSource"/>           
</bean>  
  
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, params);  
jdbcTemplate有很多的ORM化回調操作將返回結果轉爲對象列表,  
但很多時候還是需要返回ResultSet,Spring有提供一個類似ResultSet的,實現JDBC3.0 RowSet接口的Spring SqlRowSet  
注意  
jdbcTemplate儘量只執行查詢操作,莫要進行更新,否則會破壞Hibernate的二級緩存體系  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章