jdbcTemplate.queryForObject这个方法应该是三个参数,最后一个是返回值的类型。

解决方案 »

  1.   


    参数应该没错,返回值类型适用于String,Date,Long等JDK自定义类型,
      

  2.   

    把程序修改为这样:
    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;
    }
    }) ;
    就能查询到正常数量的数据,问题得到解决,可是仍然不解?
      

  3.   

    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.   

    回复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?
      

  5.   

    Projects project = new Projects();
    project.setId(rs.getString("id"));
    project.setProjName(rs.getString("projname"));
    return project;你把mapRow的方法体写成这样看行不,不要在里面返回list