JdbcTemplate - 查询

 


JdbcTemplate -  查询
使用 JdbcTemplate 进行查询时,可以使用 queryForXXX()等方法,例如下面使用 queryForInt()方法 传回 user 表格中的资料笔数:
 jdbcTemplate.queryForInt(  "SELECT  COUNT(*) FROM user");
也可以使用 queryForObject()传回一个查询后的结果物件,例如下例传回一个 String 物件:
String name = (String) jdbcTemplate.queryForObject( "SELECT name FROM USER WHERE id = ?",
             new Object[] {id},java.lang.String.class);
上面两个例子传回的都是单一笔资料,如果传回多笔资料,则可以使用 queryForList()方法,例如:
List rows = jdbcTemplate.queryForList("SELECT * FROM user WHERE id="+ id.intValue());

传回的 List 中包括的是 Map 物件,每个 Map 物件代表查询结果中的一笔资料,每笔资料包括多 个栏位内容,要取得栏位中的值,要使用栏位名称作为键(Key),例如:
...
Iterator it = rows.iterator();
while(it.hasNext()) {
 Map userMap = (Map)
 it.next();
}
...
System.out.println(userMap.get("id"));
System.out.println(userMap.get("name"));
System.out.println(userMap.get("age"));
...

您可以实作org.springframework.jdbc.core.RowCallbackHandler介面,在查询到资料之后先作一些 处理再传回,例如修改一下 使用 JdbcTemplate  中UserDAO的find()方法如下:
...
public User find(Integer id) {
 final User user = new User();
 jdbcTemplate.query( "SELECT * FROM user WHERE id = ?", new Object[] {id},
 new RowCallbackHandler() {
  public void processRow(ResultSet rs)
  throws SQLException {
   user.setId(new Integer(rs.getInt("id")));
   user.setName(rs.getString("name"));
   user.setAge(new Integer(rs.getInt("age")));
  }
 });
}
...
return user;

如果一次要取回很多查询结果的物件,则您可以先实作 org.springframework.jdbc.core.RowMapper 介面,例如:
package onlyfun.caterpillar;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
public class UserRowMapper implements RowMapper {
 public Object mapRow(ResultSet rs,
 int rowNum) throws SQLException { User user = new User();
  user.setId(new Integer(rs.getInt("id")));
  user.setName(rs.getString("name"));
  user.setAge(new Integer(rs.getInt("age")));
  return user;
 }
}
接 着在查 询时 可以使用 org.springframework.jdbc.core.RowMapperResultReader   这 么设定 , RowMapperResultReader 实作了 org.springframework.jdbc.core.ResultReader 介面:

 ...
List users = jdbcTemplate.query("SELECT * FROM user",
 new RowMapperResultReader(new UserRowMapper()));
for(int i = 0; i < users.size(); i++) {
 User user = (User) list.get(i);
 System.out.println("\tId:\t" + user.getId());
 System.out.println("\tName:\t" + next.getName());
 System.out.println("\tAge:\n" + user.getAge());
}
...
本文来源于:http://www.iteedu.com/, 原文地址:http://www.iteedu.com/webtech/j2ee/springdiary/44.php


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值