ibatIS中返回結果map 並使用list獲取

ibatis作爲一個輕量級的orm工具現在非常流行,我在使用中發現,有時僅僅希望返回一個類型爲map的list就可以了,
比如簡單的查詢統計之類的,沒有必要定義太多的pojo,因此想能不能在ibatis中直接傳入sql語句來執行,然後返回map呢?
從網上搜了一下, 還真有,實驗成功後總結一下,大家共同進步。

其實很簡單,就是在配置文件中添加以下的配置,

先在有兩種方法實現動態的傳入sql,然後返回List<Map<String,Object>>類型的數據。

第一種:如下

<!-- 測試Sql -->   <select id="sqlQuery" parameterClass="java.lang.String" resultClass="java.util.HashMap" remapResults="true">     <![CDATA[     $sql$     ]]>   </select>

<select id="getMapList" remapResults="true" resultClass="java.util.HashMap" >   <![CDATA[    select ID,USERNAME,PASSWORD,CREATETIME from Account   ]]>  </select>

注意以上配置中的 remapResults="true",之前就因爲沒有加這個參數,導致使用不的sql查詢時出錯的問題。


使用方法就更簡單了,拼好sql語句後,調用
sqlMapper.queryForList("sqlQuery", sql)就得到了查詢結果,
當然這個結果爲List,並且list中的元素爲Map類型,循環List,就得到查詢明細。
以上方法對 於分類彙總類的查詢統計功能尤其實用。如果只是count()的話,就取List的第一個元素就行了。

我們可以把這個方法抽出來寫到一個util類中,方法如下

publicstaticList queryForList(String sql){
       List rtn=null;
       try{
            rtn = sqlMapper.queryForList("sqlQuery", sql);
       }catch(SQLException sqle){
            sqle.printStackTrace();
       }
       return rtn;
   }


@SuppressWarnings("unchecked")
 @Override
 publicList<?> getMapList(){
  List<?> list =newArrayList();
  try{
   list= getSqlMapClientTemplate().queryForList(namespace+".getMapList");
  }catch(Exception e){
   System.out.println(namespace+".getMapList()異常!"
   + e.getMessage());
  }
  return list;
 }

第二種:

在spring + ibatis 結構當中:

語句:

List<Map<String, Object>> list = super.jt.queryForList(sql);




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章