我试图使用jdbcTemplate来填充列表pojos但是我不想为我的域中的每个pojo创建一个RowMapper类,而且我的域类中的属性更少,而且我的表中有更多的属性数据库所以我不能使用BeanRowMapper,我在这个网站上找到了一个例子http://www.mkyong.com/spring/spring-jdbctemplate-querying-examples/
但我的问题是这个例子并没有在firts工作
示例如下:
public List<Customer> findAll(){
String sql = "SELECT * FROM CUSTOMER";
List<Customer> customers = new ArrayList<Customer>();
List<Map> rows = getJdbcTemplate().queryForList(sql);
for (Map row : rows) {
Customer customer = new Customer();
customer.setCustId((Long)(row.get("CUST_ID")));
customer.setName((String)row.get("NAME"));
customer.setAge((Integer)row.get("AGE"));
customers.add(customer);
}
return customers;
}
但是这个例子在这一行中给了我一个错误
List<Map> rows = getJdbcTemplate().queryForList(sql);
错误是这样的:
Error incompatible types: java.util.List<java.util.Map<java.lang.String,java.lang.Object>> cannot be converted to java.util.List<java.util.Map>
所以netbeans在我右键单击该行之后,netbeans将该行更改为此
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql);
所以我没有更长时间的错误,但现在我的方法返回一个完整的空对象列表,这是我的方法更改后的
@Override
public ArrayList<Rol> findAll() {
ArrayList<User> listOfUsers= null;
try
{
String sql = "select * from User";
listOfUsers = new ArrayList<User>();
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql);
for (Map row : rows)
{
User user= new User ();
user.setName((String)(row.get("name")));
user.setLastName((String)row.get("lastName"));
user.setType((String)row.get("type"));
listOfUsers .add(user);
}
}
catch (DataAccessException dataAccessException)
{
dataAccessException.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
return listOfUsers;
}
答案 0 :(得分:0)
此代码适用于我的一个项目:
List<Map<String, Object>> rows = administradoresDao.list();
List<Administrador> usuarios = new ArrayList<>();
for (Map<String, Object> row : rows) {
Administrador usuario = new Administrador();
usuario.setId(Integer.valueOf(row.get("id").toString()));
usuario.setNombre(row.get("nombre").toString()+ " "+row.get("a_pat").toString()+" "+row.get("a_mat").toString());
usuario.setDependencia(row.get("dependencia").toString());
usuario.setEmail(row.get("email").toString());
usuario.setTelefono(row.get("telefono").toString());
usuario.setExtension(row.get("extension").toString());
usuarios.add(usuario);
}
DAO:
public List<Map<String, Object>> list() {
return jdbcTemplate.queryForList("Select * from Administradores");
}