ibatis 用HashMap解决Ibatis未知列名和列数的查询结果的resultClass映射

sqlMap映射文件中(注意代码中的remapResults=”true”必须要加,因为加了以后才能适应每次变化的列名和列数):

<selectid=”getDynamicTable” resultClass=”java.util.HashMap” remapResults=”true”parameterClass=”java.lang.Integer”> select t.* from some_table t where t.status = 1 </select>

其中“selectt.* from some_table t where t.status = 1”这段sql查询结果的列数和列名都是不固定的

Dao层实现类:

Listtest = this.getTemplate().queryForList(”Article.getDynamicTable”, newInteger(1));

得到的test是一个list的结果集,里面每一个元素都是一个Map对象,Map结构如下:

{STATUS=1,NOTE=12, URL=http://www.tc84.cn/,SQUENCE=12, ID=327105}

其中“STATUS”“NOTE”这些key就是数据库的列名,等号后面的就是value,将这个list遍历,然后再遍历出Map里面的数据,就可以实现我们的要求了

-------------------------------------


<statementid="getTest" resultClass="java.util.HashMap"> SELECT ID, NAME FROM TEST </statement>

public Map getMapTest(){ List testList =(Student)sqlMap.queryForList("getTest",null); Map result = new HashMap(); for(int i=0; i<testList.size(); i++){ Map tmp = (Map)testList.get(i); result.put(tmp.get("id"),tmp.get("name")); } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值