ibatIS:
<select id="getPaper" resultClass="List" parameterClass="String">
select distinct type,count(*) as total from paper WHERE paperid = #paperid# group by type
</select>
Impl:
List<String> paperlist = (List<String>)getSqlMapClientTemplate().queryForList("getPaper",paperid);
出来的 paperlist 里面都为空
你的xml文件中的resultclass应该是查询数据的封装即
Model 包含type 和 total或者定义一个HashMap。
其次Java中的这段代码
List paperlist = (List)getSqlMapClientTemplate().queryForList
如果是封装了一个model
List paperlist = (List)getSqlMapClientTemplate().queryForList
如果是一个Map
List paperlist = (HashMap)getSqlMapClientTemplate().queryForList
原因1:
哥们
select distinct type,count(*) as total from paper
返回是2列,你接受使用的是 List
貌似应该返回List
原因2:where 中条件数据库不存在。。
[code="java"]
List <? extends Object> results = Collections.emptyList();
results = this.getSqlMapClientTemplate().queryForList(sqlKey, params);
//sql...
[/code]
我们框架里面是这样的。全部通杀了。
1、resultClass 是 返回值类型;
2、ibatis处理过程:
1、通过反射创建resultClass对象;
2、通过反射调用setter方法设置值/Map调用put完成
3、ibatis自动将结果作为List返回 不需要我们做;
解决方案:
1、定义一个Model 包含type 和 total
2、定义一个Map
resultClass 修改为Model(自己先写个Model类)或者用HashMap,List