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

Custom mapper class is not getting the result?

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

映射器class

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

getZones Incorrect result size: expected 1, actual 17

您在执行查询时检索了多个元素。

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

你应该使用这个方法:

public <T> List<T> query(String sql, RowMapper<T> rowMapper)执行给定静态 SQL 的查询,通过 RowMapper 将每一行 映射到 Java 对象。