Java 自定义映射器类没有得到结果?

Java 自定义映射器类没有得到结果?,java,spring-jdbc,Java,Spring Jdbc,我正在编写一个DAO应用程序,我想获取区域数据。我已经编写了自己的mapper类。我无法获取值。它抛出了一个异常 映射器类 public class zoneMapper implements RowMapper { @Override public Object mapRow(ResultSet resultSet, int rowNum) throws SQLException { ZoneBean zone=new ZoneBean();

我正在编写一个DAO应用程序,我想获取区域数据。我已经编写了自己的mapper类。我无法获取值。它抛出了一个异常

映射器类

public class zoneMapper implements RowMapper {

    @Override
    public Object mapRow(ResultSet resultSet, int rowNum) throws SQLException {

         ZoneBean zone=new ZoneBean();
        zone.setZoneId(resultSet.getInt("ZONE_ID"));
        zone.setZoneName(resultSet.getString("ZONE_NAME"));
        return zone;

    }
dao呼叫

List<ZoneBean> zoneList=new ArrayList<ZoneBean>();
        try {
             JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

             zoneList = (List<ZoneBean>) jdbcTemplate.queryForObject(
                     queriesConstants.GET_ZONES, new zoneMapper());
             }catch(Exception e){
            System.out.println("getZones "+e.getMessage());
            //logger.error("getZones "+e.getMessage());
        }
 **Exception is**
 getZones Incorrect result size: expected 1, actual 17
List zoneList=new ArrayList();
试一试{
JdbcTemplate JdbcTemplate=新的JdbcTemplate(数据源);
zoneList=(列表)jdbcTemplate.queryForObject(
queriesConstants.GET_ZONES,new zoneMapper());
}捕获(例外e){
System.out.println(“getZones”+e.getMessage());
//logger.error(“getZones”+e.getMessage());
}
**例外是**
getZones结果大小不正确:预期为1,实际为17
getZones结果大小不正确:预期为1,实际为17

执行查询时检索多个元素

因此,
public T queryForObject(String sql,RowMapper RowMapper)
不适合您的需要,因为它执行给定静态sql的查询,通过RowMapper将单个结果行映射到Java对象

您应该使用以下方法:

公共列表查询(字符串sql,行映射器行映射器)
执行给定静态sql的查询,通过行映射器将每一行映射到Java对象

getZones结果大小不正确:预期为1,实际为17

执行查询时检索多个元素

因此,
public T queryForObject(String sql,RowMapper RowMapper)
不适合您的需要,因为它执行给定静态sql的查询,通过RowMapper将单个结果行映射到Java对象

您应该使用以下方法:


公共列表查询(字符串sql,行映射器行映射器)
执行给定静态sql的查询,通过行映射器将每一行映射到Java对象

问题是queryForObject只需要一行,而查询返回了17行。您的映射程序甚至还没有执行。改用queryForList方法问题是queryForObject只需要一行,而查询返回了17行。您的映射程序甚至还没有执行。改为使用queryForList方法好的解释和我的问题解决(+1)让我接受这个答案好的解释和我的问题解决(+1)让我接受这个答案