jdbcTemplate的queryForList
jdbcTemplate的queryForList的使⽤⽅法如下,它不⼀样的地⽅是,它获得的结果,会再放到⼀个map⾥去:
List rows = jdbcTemplate.queryForList("SELECT * FROM USER");
Iterator it = rows.iterator();
while(it.hasNext()) {
Map userMap = (Map) it.next();
System.out.("user_id") + "\t");
System.out.("name") + "\t");
System.out.("sex") + "\t");
System.out.("age") + "\t");
}
我的⼀个例⼦中,得到的结果只有⼀列数字类型的数据(targer_id),但使⽤queryForList得到的结果集个数与数据库的内容⼀致,但每⼀项都是null。不清楚其原因,修改成
jdbcTemplate.query(sql,
才能正确得到结果。
附上带⽤的⼀些⽅法
使⽤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 (i);
System.out.("id"));
System.out.("name"));
System.out.("age"));
}
4、jdbcTemplate.queryForMap(SQL)
--这个查询只能是查询⼀条记录的查询,返回⼀个map,key的值是column的值
Map map = jdbcTemplate.queryForMap("select count(*) as keyval from user");
<("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 {
jdbctemplate查询一条数据
VideoSearch vs = new VideoSearch();
vs.String("RECORDINGFILENAME"));
vs.String("CALLID"));
list.add(vs);
}
}
说明:
JDBCTemplate的使⽤⽅法:
在l中定义⼀个jdbcTemplate的节点,使⽤POJO注⼊,获得注⼊后可以执⾏操作
不需要继承什么基类
<bean id="jdbcTemplate"
class="org.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的⼆级缓存体系

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。