jdbcTemplate查询

  1. 使用jdbcTemplate查询数据的时候可以使用queryForXXX等方法。下面我们就一一解析一下: 
  2. 1、jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong() 
  3. --使用queryForInt返回user表中的记录数量,queryForInt搭配这样的sql可以在分页的时候计算总记录数 
  4. jdbcTemplate.queryForInt("select count(*) from user"); 
  5.  
  6. 2、jdbcTemplate.queryForObject() 
  7. --本质上和queryForInt相同,只是可以返回不同的对象,例如返回一个String对象 
  8. String name = (String) jdbcTemplate.queryForObject(  --3个参数,1、sql 2、要传递的参数数组 3、返回来的对象class 
  9. "SELECT name FROM USER WHERE id = ?",   
  10. new Object[] {id},   
  11. java.lang.String.class); 
  12.  
  13. 3、jdbcTemplate.queryForList(???) 
  14. --返回一个装有map的list,每一个map是一条记录,map里面的key是字段名 
  15. List rows = jdbcTemplate.queryForList("SELECT * FROM user");  --得到装有map的list 
  16. for(int i=0;i<rows.size();i++){                   --遍历 
  17. Map userMap=rows.get(i); 
  18. System.out.println(userMap.get("id"));   
  19. System.out.println(userMap.get("name"));   
  20. System.out.println(userMap.get("age")); 
  21.  
  22.  
  23. 4、jdbcTemplate.queryForMap(SQL) 
  24. --这个查询只能是查询一条记录的查询,返回一个map,key的值是column的值 
  25. Map map = jdbcTemplate.queryForMap("select count(*) as keyval from user"); 
  26. map.get("keyval"
  27.  
  28.  
  29. 5、jdbcTemplate.queryForRowSet(???) 
  30. --返回一个RowSet   然后调用.getString或者getInt等去取值 
  31.  
  32.  
  33.  
  34.  
  35. 6、jdbc1.query(sql, new RowCallbackHandler() 
  36. --返回一个ResultSet对象, processRow有自动循环的机制,它会自动执行processRow中的语句直到 
  37. --rs的size执行完了为止。我们可以在这其中用list完成对象的转移,只不过list要用final来修饰 
  38. jdbc1.query(sql, new RowCallbackHandler() { //editing 
  39.             public void processRow(ResultSet rs) throws SQLException { 
  40.         VideoSearch vs = new VideoSearch(); 
  41.         vs.setRECORDINGFILENAME(rs.getString("RECORDINGFILENAME")); 
  42.         vs.setCALLID(rs.getString("CALLID")); 
  43.         list.add(vs); 
  44.  
  45.     } 
  46.     } 
  47.  
  48. 说明: 
  49. JDBCTemplate的使用方法: 
  50. 在ApplicationContext.xml中定义一个jdbcTemplate的节点,使用POJO注入,获得注入后可以执行操作 
  51. 不需要继承什么基类 
  52.  
  53. <bean id="jdbcTemplate" 
  54. class="org.springframework.jdbc.core.JdbcTemplate">             
  55.       <property name="dataSource" ref="dataSource"/>          
  56. </bean> 
  57.  
  58. SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, params); 
  59. jdbcTemplate有很多的ORM化回调操作将返回结果转为对象列表, 
  60. 但很多时候还是需要返回ResultSet,Spring有提供一个类似ResultSet的,实现JDBC3.0 RowSet接口的Spring SqlRowSet 
  61. 注意 
  62. jdbcTemplate尽量只执行查询操作,莫要进行更新,否则会破坏Hibernate的二级缓存体系
发布了63 篇原创文章 · 获赞 28 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章