Spring的jdbcTemplate使用

来源:互联网 发布:安卓虚拟机for mac 编辑:程序博客网 时间:2024/06/05 11:09
[sql] view plaincopy
  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.   
  24. 4、jdbcTemplate.queryForMap(SQL)  
  25. --这个查询只能是查询一条记录的查询,返回一个map,key的值是column的值  
  26. Map map = jdbcTemplate.queryForMap("select count(*) as keyval from user");  
  27. map.get("keyval")  
  28.   
  29.   
  30. 5、jdbcTemplate.queryForRowSet(???)  
  31. --返回一个RowSet   然后调用.getString或者getInt等去取值  
  32.   
  33.   
  34.   
  35.   
  36. 6、jdbc1.query(sql, new RowCallbackHandler()  
  37. --返回一个ResultSet对象, processRow有自动循环的机制,它会自动执行processRow中的语句直到  
  38. --rs的size执行完了为止。我们可以在这其中用list完成对象的转移,只不过list要用final来修饰  
  39. jdbc1.query(sql, new RowCallbackHandler() { //editing  
  40.             public void processRow(ResultSet rs) throws SQLException {  
  41.         VideoSearch vs = new VideoSearch();  
  42.         vs.setRECORDINGFILENAME(rs.getString("RECORDINGFILENAME"));  
  43.         vs.setCALLID(rs.getString("CALLID"));  
  44.         list.add(vs);  
  45.   
  46.     }  
  47.     }  
  48.   
  49. 说明:  
  50. JDBCTemplate的使用方法:  
  51. 在ApplicationContext.xml中定义一个jdbcTemplate的节点,使用POJO注入,获得注入后可以执行操作  
  52. 不需要继承什么基类  
  53.   
  54. <bean id="jdbcTemplate"  
  55. class="org.springframework.jdbc.core.JdbcTemplate">              
  56.       <property name="dataSource" ref="dataSource"/>           
  57. </bean>  
  58.   
  59. SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, params);  
  60. jdbcTemplate有很多的ORM化回调操作将返回结果转为对象列表,  
  61. 但很多时候还是需要返回ResultSet,Spring有提供一个类似ResultSet的,实现JDBC3.0 RowSet接口的Spring SqlRowSet  
  62. 注意  
  63. jdbcTemplate尽量只执行查询操作,莫要进行更新,否则会破坏Hibernate的二级缓存体系 
0 0
原创粉丝点击