ibatis封装list 时候空值

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