Python 官方文档:入门教程 => 点击学习
目录mybatis返回map结果集@MapKey使用场景使用id作为map的keMap的value为Map,一条记录对应一个Map使用name作为map的key mybat
select的 resultType属性为map时:
通过MapKey指定map的key值
@MapKey("id")
Map<Long, UserInfo> getUserInfoMap();
@MapKey("id")
Map<Long, Map<String,Object>> getUserValueMap();
@MapKey("name")
Map<name, UserInfo> getUserInfoMap();
..............返回一条记录...............
Map<String, Object> getUserInfoMapById();
背景:今天使用MyBatis查询一些记录,数据涉及到两个表里的数据,需要连表查询,但我MyBatis的返回结果不想创建新的DO对象,因此使用@MapKey注解返回一个Map集合。
含义:@MapKey注解用于mapper.xml文件中,一般用于查询多条记录中各个字段的结果,存储在Map中。Map结构的示例如下:Map<Long, Map<String, String>>。范型类型可以修改。
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.java
@MapKey("id")
Map<Long,Map<String,String>> getInfoById(@Param("id") Long id, @Param("name") String name);
3. manager.java
// 查询,返回结果:{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");
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: mybatis返回map结果集@MapKey使用的场景分析
本文链接: https://lsjlt.com/news/163349.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0