@Test// @SuppressWarnings("unchecked")publicvoidtest_query_data_from_userTable()throws Exception {
String sql_query_userTable ="select id, name from user order by id asc";final List<User> list =newArrayList<User>();
jdbcTemplate.query(sql_query_userTable,newRowMapper(){public Object mapRow(ResultSet rs,int rowNum)throws SQLException {
System.out.println("current row:"+ rs.getRow()+", "+ rowNum);/** 必须重置游标到第一行之前 */
rs.beforeFirst();while(rs.next()){int id = rs.getInt(1);
String name = rs.getString(2);
list.add(newUser(id, name));}return null;}});
System.out.println(list.size());for(User u : list){
System.out.println(u);}}
执行结果如下
# 可见当前行号为 1,即当前游标在第 2 行之前,所以第 1 行始终不能被遍历到
current row:1, 0
# 重置游标(beforeFirst())后,数据正确打印
5
User [id=13, name=李斯]
User [id=14, name=张丽]
User [id=15, name=刘晶]
User [id=16, name=悟空]
User [id=17, name=Micheal 刘]