如何使用JDBCTemplate.queryForMap获取Map数据


问题内容

如何从中加载数据JDBCTemplate.queryForMap()并返回Map接口。如何在内部维护查询数据。我尝试加载,但出现以下异常,即
org.springframework.dao.IncorrectResultSizeDataAccessException:错误的结果

码:-

public List getUserInfoByAlll() {
    List profilelist=new ArrayList();
    Map m=new HashMap();
    m=this.jdbctemplate.queryForMap("SELECT userid,username  FROM USER");
    Set s=m.keySet();
    Iterator it=s.iterator();
    while(it.hasNext()){
        String its=(String)it.next();
        Object ob=(Object)m.get(its);
        log.info("UserDAOImpl::getUserListSize()"+ob);
    }
    return profilelist;
}

请帮我


问题答案:

queryForMap如果您想获得一行,则比较合适。您选择的是无where子句,因此您可能想要queryForList。该错误可能表明queryForMap需要一行,但您查询的却是很多行。

查看文档。
有一个queryForList只需要sql的代码;返回类型是

List<Map<String,Object>>

因此,一旦获得结果,就可以做自己在做的事情。我会做类似的事情

List results = template.queryForList(sql);

for (Map m : results){
   m.get('userid');
   m.get('username');
}

我将让您填写详细信息,但是在这种情况下,我不会遍历键。我喜欢明确说明自己的期望。

如果您有一个User对象,并且实际上要加载User实例,则可以使用queryForList带有sql和类类型的

queryForList(String sql, Class<T> elementType)

(哇,自从我离开Javaland以来,Spring发生了很大变化。)