如何在不使用RowMapper类或BeanRowMapper的情况下在jdbcTemplate查询中映射pojos列表

时间:2015-03-11 20:38:34

标签: java spring spring-mvc jdbctemplate

我试图使用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;
}

1 个答案:

答案 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");
}