Mybatis中注解@MapKey的使用方式
Mybatis注解@MapKey的使用
MyBatis查詢一些記錄,數(shù)據(jù)涉及到兩個表里的數(shù)據(jù),需要連表查詢,但我MyBatis的返回結(jié)果不想創(chuàng)建新的DO對象,因此使用@MapKey注解返回一個Map集合。
含義
@MapKey注解用于mapper.xml文件中,一般用于查詢多條記錄中各個字段的結(jié)果,存儲在Map中。
Map結(jié)構(gòu)的示例如下:
Map<Long, Map<String, String>>。范型類型可以修改。
- Map的key:一般存儲每條記錄的主鍵,也可以用其他值表示,主要取決于Dao層@MapKey注解后面的字段(如@MapKey("id"));
- Map的value:也是一個Map,表示查詢出這條記錄的每個字段的字段名稱和字段值。
1. mapper.xml文件
<select id="getInfoById" resultType="java.util.Map"> select ext.id as id, info.produce_area as area, ext.attribute_value as companyName from product_info info left join product_ext ext on info.id=ext.id where info.id=#{id} and ext.attribute_name=#{name} </select>
2. dao
@MapKey("id") Map<Long,Map<String,String>> getInfoById(@Param("id") Long id, @Param("name") String name);
3. manager
// 查詢,返回結(jié)果:{1={area:上海,companyName=西西公司}} // 如果是多條記錄,返回結(jié)果如:{1={area:上海,companyName:西西公司},2={area:南京,compantyName:猴猴公司}} Map<Long, Map<String, String>> map = productDao.getInfoById(id, "公司名稱"); if(map==null || map.isEmpty() || !map.containsKey(id)){ return null; } // 獲取結(jié)果 String area = produceInfoMap.get(id).get("area"); String companyName = produceInfoMap.get(productTracInfoId).get("companyName");
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis?plus新增(insert)數(shù)據(jù)獲取主鍵id的問題
這篇文章主要介紹了mybatis?plus新增(insert)數(shù)據(jù)獲取主鍵id的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03IDEA創(chuàng)建Java Web項目不能及時刷新HTML或JSP頁面問題
這篇文章主要介紹了IDEA創(chuàng)建Java Web項目不能及時刷新HTML或JSP頁面問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03SpringBoot使用@Cacheable注解實現(xiàn)緩存功能流程詳解
最近一直再學Spring Boot,在學習的過程中也有過很多疑問。為了解答自己的疑惑,也在網(wǎng)上查了一些資料,以下是對@Cacheable注解的一些理解2023-01-01