首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不使用RowMapper类或BeanRowMapper的情况下在jdbcTemplate查询中映射pojos列表

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

Stack Overflow用户
提问于 2015-03-12 04:38:34
回答 1查看 12.1K关注 0票数 2

我正在尝试使用jdbcTemplate填充pojo列表,但我不想为我的域中的每个pojo创建一个RowMapper类,而且我的域类中的属性较少,数据库中的表中的属性较多,所以我不能使用BeanRowMapper,我在此网站http://www.mkyong.com/spring/spring-jdbctemplate-querying-examples/中找到了一个示例

但我的问题是,这个例子一开始并不起作用

示例如下:

代码语言:javascript
复制
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;
}

但是这个例子给出了下面这行的一个错误

代码语言:javascript
复制
List<Map> rows = getJdbcTemplate().queryForList(sql);

错误是这样的:

代码语言:javascript
复制
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将该行更改为

代码语言:javascript
复制
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql);

所以我不再有这个错误,但现在我的方法返回了一个包含空对象的列表,下面是我的方法经过修改后的结果

代码语言:javascript
复制
 @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;
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-12 04:51:35

下面的代码在我的一个项目中运行:

代码语言:javascript
复制
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);
    }

刀:

代码语言:javascript
复制
public List<Map<String, Object>> list() {
    return jdbcTemplate.queryForList("Select * from Administradores");
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28996873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档