如何从JDBCTemplate.queryForMap()加载数据并返回Map接口(interface)。如何在内部维护查询数据。我尝试加载,但低于异常,即 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想要一行,但是您查询的却是检索了很多行。

Check out the docs.有一个仅包含sql的queryForList;返回类型是
List<Map<String,Object>>

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

List results = template.queryForList(sql);

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

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

如果您有一个User对象,并且您实际上要加载User实例,则可以使用带有sql和类类型的queryForListqueryForList(String sql, Class<T> elementType)
(哇,自从我离开Javaland以来,Spring发生了很大变化。)

09-25 21:06