mybatis返回map结果集@MapKey使用的场景分析
目录
- mybatis返回map结果集@MapKey使用场景
- 使用id作为map的ke
- Map的value为Map,一条记录对应一个Map
- 使用name作为map的key
- mybatis使用@MapKey注解
- 背景和含义
- 具体示例
mybatis返回map结果集@MapKey使用场景 select的 resultType属性为map时:
通过MapKey指定map的key值
使用id作为map的ke
@MapKey("id")MapgetUserInfoMap();
Map的value为Map,一条记录对应一个Map
@MapKey("id")MapgetUserValueMap();
使用name作为map的key
@MapKey("name")MapgetUserInfoMap(); ..............返回一条记录...............Map getUserInfoMapById();
mybatis使用@MapKey注解 【mybatis返回map结果集@MapKey使用的场景分析】
背景和含义
背景:今天使用MyBatis查询一些记录,数据涉及到两个表里的数据,需要连表查询,但我MyBatis的返回结果不想创建新的DO对象,因此使用@MapKey注解返回一个Map集合。
含义:@MapKey注解用于mapper.xml文件中,一般用于查询多条记录中各个字段的结果,存储在Map中。Map结构的示例如下:Map
- Map的key:一般存储每条记录的主键,也可以用其他值表示,主要取决于Dao层@MapKey注解后面的字段(如@MapKey("id"));
- Map的value:也是一个Map,表示查询出这条记录的每个字段的字段名称和字段值。
具体示例
1. mapper.xml文件
selectext.id as id,info.produce_area as area,ext.attribute_value as companyNamefrom product_info infoleft join product_ext ext on info.id=ext.idwhere info.id=#{id} and ext.attribute_name=#{name}
2. dao.java
@MapKey("id")MapgetInfoById(@Param("id") Long id, @Param("name") String name);
3. manager.java
// 查询,返回结果:{1={area:上海,companyName=西西公司}}// 如果是多条记录,返回结果如:{1={area:上海,companyName:西西公司},2={area:南京,compantyName:猴猴公司}}Mapmap = 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");
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- Android开发 Fragment里监听返回键
- 问题管理-- Struts2配置struts.xml中Action访问报There is no Action mapped for namespace...
- 3. 动态代理Mapper实现类(官方推荐方式)
- Mybatis的xml中使用if/else标签的具体使用
- 将Gmail迁移到googleapps的imapsync脚本
- 使用datamapper启动Rails项目
- 简单实现 web/app端 经API GateWay 将请求转发至微服务,并将数据返回给client客户端
- @RequestMapping接口动态参数
- mybatis 报文档根元素 "mapper" 必须匹配 DOCTYPE 根 "null"
- zabbix VMappliance修改 Server detail from localhost