Mybatis中@MapKey注解具有什么功能呢?
下文笔者讲述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");
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。