Spring的jdbcTemplate使用

使用jdbcTemplate查询数据的时候可以使用queryForXXX等方法。下面我们就一一解析一下:

[java][/java] view plaincopyprint?

  1. 1、jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong()
  2. –使用queryForInt返回user表中的记录数量,queryForInt搭配这样的sql可以在分页的时候计算总记录数
  3. jdbcTemplate.queryForInt(“select count(*) from user”);
  4. 2、jdbcTemplate.queryForObject()
  5. –本质上和queryForInt相同,只是可以返回不同的对象,例如返回一个String对象
  6. String name = (String) jdbcTemplate.queryForObject(  –3个参数,1、sql 2、要传递的参数数组 3、返回来的对象class
  7. “SELECT name FROM USER WHERE id = ?”,
  8. new Object[] {id},
  9. java.lang.String.class);
  10. 3、jdbcTemplate.queryForList(???)
  11. –返回一个装有map的list,每一个map是一条记录,map里面的key是字段名
  12. List rows = jdbcTemplate.queryForList(“SELECT * FROM user”);  –得到装有map的list
  13. for(int i=0;i<rows.size();i++){                   –遍历
  14. Map userMap=rows.get(i);
  15. System.out.println(userMap.get(“id”));
  16. System.out.println(userMap.get(“name”));
  17. System.out.println(userMap.get(“age”));
  18. }
  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的二级缓存体系

标签