Mybatis报错mapkey is required问题及解决
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" ); |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Java 调用Restful API接口的几种方式(HTTPS)
这篇文章主要介绍了Java 调用Restful API接口的几种方式(HTTPS),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-02-02
最新评论