MyBatis查詢返回Map示例代碼


這篇文章主要給大家介紹了關於MyBatis查詢返回Map的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨着小編來一起學習學習吧

前言

有時候我們做查詢, 只需要返回兩個string類型的字段,方便我們后續的處理.比如根據商品的code查詢對應的分類的名字,需要返回一個map, key為商品code, value為商品分類對應的名稱.以方便我們后續對結果集的處理.如果你直接用mybatis返回一個map, 你可能會發現,結果根據不是自己需要的.這時候我們需要自己實現一個ResultHandler來實現我們想要的結果,廢話不多說,直接上代碼

方法如下

第一步,在mapper.xml文件當中,定義一個ResultMap

 <resultMap id="nodeMap" type="java.util.HashMap">
    <result column="areaCode" property="key"/>
    <result column="areaName" property="value" />
  </resultMap>

 

這個map當中的property的定義,是我們在定義ResultHandler的時候,需要用到的.column是我們做sql查詢的時候mysql中字段的名稱,注意這里不支持駝峰自動映射,比如我這里寫了commodityCode, 后面需要用AS來處理一下.

第二步正常的在我們的mapper.xml中寫查詢語句

  <select id="selectList" resultMap="nodeMap">
    select  area_code as areaCode ,area_name as areaName from area
  </select>
@Repository
@Mapper
public interface AreaMapper {


     Map<String, String> selectList();


}

 

注意返回類型為ResultMap, 也就是我們上面定義的那個.

第三步 自定義一個ResultHandler

 

public class MapResultHandler implements ResultHandler {

    private final Map<String ,String> mappedResults = new HashMap();
    @Override
    public void handleResult(ResultContext resultContext) {
        Map<String ,String> m = (Map) resultContext.getResultObject();
        mappedResults.put(m.get("key"), m.get("value"));
    }
    public Map getMappedResults() {
        return mappedResults;
    }
}

 

第四步 就是使用了, 我們在service層, 利用spring的自動注入,來注入mybatis的sqlSession

    @Autowired
    private AreaMapper areaMapper;
    @Autowired
    private  SqlSession sqlSession;


@ResponseBody
@GetMapping("/dp/findAllAreaCode.action")
public Map<String,String> findAllAreaCode( ){
    MapResultHandler handler= new MapResultHandler();
sqlSession.select("com.cetcgidata.lec.dao.AreaMapper.selectList",handler);
Map<String,String> nodeMap=handler.getMappedResults();

return nodeMap;
}

 

使用sqlSession的select方法,第一個參數是mapper.xml文件當中定義的select的命名空間, 第二個參數是需要傳入的參數,如果沒有可以不要這個參數.第三個是我們自定義的handler, 這樣就能返回我們要的map結果了.

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支持。

 

 

本文標題: MyBatis查詢返回Map示例代碼
本文地址: http://www.cppcns.com/ruanjian/java/242543.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM