您的位置:首页 > 其它

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

2012-05-02 10:31 381 查看
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"));
   }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: