Querying and populating a single domain object: Actor actor = this.jdbcTemplate.queryForObject( "select first_name, last_name from t_actor where id = ?", new Object[]{1212L}, new RowMapper<Actor>() { public Actor mapRow(ResultSet rs, int rowNum) throws SQLException { Actor actor = new Actor(); actor.setFirstName(rs.getString("first_name")); actor.setLastName(rs.getString("last_name")); return actor; } }); Querying and populating a number of domain objects: List<Actor> actors = this.jdbcTemplate.query( "select first_name, last_name from t_actor", new RowMapper<Actor>() { public Actor mapRow(ResultSet rs, int rowNum) throws SQLException { Actor actor = new Actor(); actor.setFirstName(rs.getString("first_name")); actor.setLastName(rs.getString("last_name")); return actor; } });
回复4# 我用的spring 2.5.6,query不支持泛型查询 好纠结,用这个List<Projects> list = (List<Projects>) jdbcTemplate.query(sql, new RowMapper() { @Override public Object mapRow(ResultSet rs, int i) throws SQLException { List<Projects> list = new ArrayList<Projects>(); while (rs.next()) { Projects project = new Projects(); project.setId(rs.getString("id")); project.setProjName(rs.getString("projname")); list.add(project); } return list; } }); 返回的结果数量比数据库少一条,是不是spring 2.5.6的bug?
Projects project = new Projects(); project.setId(rs.getString("id")); project.setProjName(rs.getString("projname")); return project;你把mapRow的方法体写成这样看行不,不要在里面返回list
参数应该没错,返回值类型适用于String,Date,Long等JDK自定义类型,
final String sql="SELECT * FROM TB_PROJECT_SHEET " ;
String idS="'4028819e442b295501442b2bfd550002','4028819e442decc801442df4ef3f0004'" ;
//1. 以Spring JDBC的方式
List<Projects> list=(List<Projects>) jdbcTemplate.queryForObject(sql,new RowMapper(){
@Override
public Object mapRow(ResultSet rs, int i) throws SQLException {
List<Projects> list=new ArrayList<Projects>() ;
Projects project=new Projects() ;
project.setId(rs.getString("id")) ;
project.setProjName(rs.getString("projname")) ;
list.add(project) ;
while(rs.next()){
project=new Projects() ;
project.setId(rs.getString("id")) ;
project.setProjName(rs.getString("projname")) ;
list.add(project) ;
}
return list;
}
}) ;
就能查询到正常数量的数据,问题得到解决,可是仍然不解?
Actor actor = this.jdbcTemplate.queryForObject(
"select first_name, last_name from t_actor where id = ?",
new Object[]{1212L},
new RowMapper<Actor>() {
public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
Actor actor = new Actor();
actor.setFirstName(rs.getString("first_name"));
actor.setLastName(rs.getString("last_name"));
return actor;
}
});
Querying and populating a number of domain objects:
List<Actor> actors = this.jdbcTemplate.query(
"select first_name, last_name from t_actor",
new RowMapper<Actor>() {
public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
Actor actor = new Actor();
actor.setFirstName(rs.getString("first_name"));
actor.setLastName(rs.getString("last_name"));
return actor;
}
});
我用的spring 2.5.6,query不支持泛型查询
好纠结,用这个List<Projects> list = (List<Projects>) jdbcTemplate.query(sql,
new RowMapper() {
@Override
public Object mapRow(ResultSet rs, int i)
throws SQLException {
List<Projects> list = new ArrayList<Projects>();
while (rs.next()) {
Projects project = new Projects();
project.setId(rs.getString("id"));
project.setProjName(rs.getString("projname"));
list.add(project);
}
return list;
}
});
返回的结果数量比数据库少一条,是不是spring 2.5.6的bug?
project.setId(rs.getString("id"));
project.setProjName(rs.getString("projname"));
return project;你把mapRow的方法体写成这样看行不,不要在里面返回list