天天看點

jdbcTemplate查詢

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

繼續閱讀