Java 自定义映射器类没有得到结果?
我正在编写一个DAO应用程序,我想获取区域数据。我已经编写了自己的mapper类。我无法获取值。它抛出了一个异常 映射器类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();
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)让我接受这个答案