Mybatis中注解@MapKey的使用方式
更新時間:2024年12月14日 10:27:36 作者:杭州小哥哥
MyBatis使用@MapKey注解進行連表查詢,返回一個Map集合,Map的key為每條記錄的主鍵或指定字段,value為該記錄的字段名稱和字段值
Mybatis注解@MapKey的使用
MyBatis查詢一些記錄,數(shù)據(jù)涉及到兩個表里的數(shù)據(jù),需要連表查詢,但我MyBatis的返回結果不想創(chuàng)建新的DO對象,因此使用@MapKey注解返回一個Map集合。
含義
@MapKey注解用于mapper.xml文件中,一般用于查詢多條記錄中各個字段的結果,存儲在Map中。
Map結構的示例如下:
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
// 查詢,返回結果:{1={area:上海,companyName=西西公司}} // 如果是多條記錄,返回結果如:{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; } // 獲取結果 String area = produceInfoMap.get(id).get("area"); String companyName = produceInfoMap.get(productTracInfoId).get("companyName");
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
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