我正在编写DAO应用程序,我想获取区域数据。我已经编写了自己的mapper类。我无法获得价值。这是一个例外。
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 call
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
答案 0 :(得分:2)
getZones结果大小不正确:预期为1,实际为17
执行查询时检索多个元素。
因此, public <T> T queryForObject(String sql, RowMapper<T> rowMapper)
不适合您的需要,因为它在给定静态SQL的情况下执行查询,通过RowMapper将单个结果行映射到Java对象。
你应该使用这种方法:
public <T> List<T> query(String sql, RowMapper<T> rowMapper)
执行给定静态SQL的查询,通过RowMapper将每行映射到Java对象。