Mybatis中@MapKey注解具有什么功能呢?

戚薇 MyBatis 发布时间:2023-06-28 09:53:08 阅读数:4905 1
下文笔者讲述Mybatis中@MapKey注解的功能简介说明,如下所示

@MapKey注解的功能

@MapKey:
   是MyBatis框架的注解
@MapKey的功能:
      将list结果集转换成key-value形式的Map结果集
	  使我们可以快速从结果集中查询指定结果
	  mapKey中的参数值作为map的key

@MapKey注解的示例

//dao层
@MapKey("id")
Map getStudents();

//xml层
<!--获取学生基本信息-->
<select id="getStudents" resultType="map">
    SELECT id, idCard, name FROM students
</select> 

@MapKey高级用法:
    多表查询,id作为主键Id,其他的作为另一个map存储
 Map<Long, Map<String, String>>。范型类型可以修改。
   Map的key:
      一般存储每条记录的主键,也可以用其他值表示
	   主要取决于Dao层@MapKey注解后面的字段(如@MapKey("id"));
   Map的value:
       也是一个Map
       表示查询出这条记录的每个字段的字段名称和字段值。

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>

dao

@MapKey("id")
Map<Long,Map<String,String>> getInfoById(@Param("id") Long id, @Param("name") String name);

业务逻辑测试

// 查询,返回结果:{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");
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202306/6921.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者