Mybatis报错mapkey is required问题及解决

 更新时间:2024年06月15日 11:57:08   作者:时间是一种解药  
这篇文章主要介绍了Mybatis报错mapkey is required问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java技术迷

Mybatis报错mapkey is required

问题背景

因为使用了mybatisX插件,导致检查报错mapkey is required

解决方案

1 关闭mybatis的检查,ctrl+alt+s打开setting,Editor→inspections→mybatis

莫名出来的错误,之前还是好好的

Mybatis注解@MapKey的使用

MyBatis查询一些记录,数据涉及到两个表里的数据,需要连表查询,但我MyBatis的返回结果不想创建新的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文件

1
2
3
4
5
6
7
8
9
<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

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

3. manager

1
2
3
4
5
6
7
8
9
10
// 查询,返回结果:{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");

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/cucgyfjklx/article/details/125159695

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • 通过实例解析Spring argNames属性

    通过实例解析Spring argNames属性

    这篇文章主要介绍了通过实例解析Spring argNames属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Java 调用Restful API接口的几种方式(HTTPS)

    Java 调用Restful API接口的几种方式(HTTPS)

    这篇文章主要介绍了Java 调用Restful API接口的几种方式(HTTPS),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • java实现简单点赞功能

    java实现简单点赞功能

    这篇文章主要为大家详细介绍了java实现简单点赞功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 彻底理解Java中的ThreadLocal

    彻底理解Java中的ThreadLocal

     ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。使用这个工具类可以很简洁地编写出优美的多线程程序。 接下来通过本文给大家介绍Java中的ThreadLocal,需要的朋友可以参考下
    2017-03-03
  • Maven访问仓库顺序代码实例解析

    Maven访问仓库顺序代码实例解析

    这篇文章主要介绍了Maven访问仓库顺序实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • SpringBoot Redis配置多数据源的项目实践

    SpringBoot Redis配置多数据源的项目实践

    springboot中默认的redis配置是只能对单个redis库进行操作的, 那么我们需要多个库操作的时候这个时候就可以采用redis多数据源 ,本文就介绍了SpringBoot Redis配置多数据源,感兴趣的可以了解一下
    2023-07-07
  • Java 常见的限流算法详细分析并实现

    Java 常见的限流算法详细分析并实现

    大数据量高并发访问时,经常出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。限流时,常见算法是计数器、漏斗、令牌桶算法
    2022-04-04
  • Java类型通配符应用实战分析

    Java类型通配符应用实战分析

    这篇文章主要介绍了Java类型通配符应用实战,简单分析了Java类型通配符概念、原理并结合实例形式给出了Java类型通配符相关使用技巧,需要的朋友可以参考下
    2019-07-07
  • Spring Bean生命周期之Bean的实例化详解

    Spring Bean生命周期之Bean的实例化详解

    这篇文章主要为大家详细介绍了Spring Bean生命周期之Bean的实例化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java数据结构中七种排序算法实现详解

    Java数据结构中七种排序算法实现详解

    这篇文章主要介绍了Java数据结构中七种排序算法的实现方法,排序算法可分为两大类,比较类排序和非比较类排序,顾名思义可知它们是通过比较来决定元素间的相对次序,需要详细了解排序算法的朋友可以参考下
    2024-02-02

最新评论