问题描述
Auth\LoginController
我需要从上面的方法中返回其List,但是我需要返回
public List<Employee> getEmployeeDetails() {
return jdbcTemplate.query(GET_EMPLOYEE_sql,new RowMapper<Employee>() {
@Override
public Employee mapRow(ResultSet rs,int rowNum) throws sqlException {
Employee employee = new Employee();
employee.setCode(rs.getBigDecimal("cd"));
employee.setAddress(rs.getString("address"));
employee.setContactNo((rs.getString("contactNo")));
return employee;
}
});
}
类型不匹配:无法从List
请找到以下代码
Map<BigDecimal,List<Employee>> employeeMap = new HashMap<>();
while doing that getting exception
解决方法
您可以做两件事,
-
不返回查询语句,请在getEmployeeDetails()方法中返回
employeeMap
。 -
出于对查询的期望,您必须对RowMapper使用
ResultSetExtractor
而不是RowMapper
,因为您要对每一行进行操作,因此它总是返回列表。
使用ResultSetExtractor
,您可以执行类似的操作
return template.query(GET_EMPLOYEE_SQL,new ResultSetExtractor<Map<BigDecimal,Employee>>() {
@Override
public Map<BigDecimal,Employee> extractData(ResultSet rs) throws SQLException,DataAccessException {
Map<BigDecimal,Employee> employeeMap = new HashMap<>();
while (rs.next()) {
Employee employee = new Employee();
employee.setCode(rs.getBigDecimal("cd"));
employee.setAddress(rs.getString("address"));
employee.setContactNo((rs.getString("contactNo")));
employeeMap.put(rs.getBigDecimal("cd"),employee);
}
return employeeMap;
}
});