如何从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和类类型的queryForList
queryForList(String sql, Class<T> elementType)
(哇,自从我离开Javaland以来,Spring发生了很大变化。)