前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis元素类型为 “resultMap“ 的内容必须匹配 “(constructor?,id *,result*,association报错解决

mybatis元素类型为 “resultMap“ 的内容必须匹配 “(constructor?,id *,result*,association报错解决

作者头像
宁在春
发布2022-10-31 15:19:15
7510
发布2022-10-31 15:19:15
举报
文章被收录于专栏:关于Java学习@宁在春

1.前言

太久没写这种套娃式的sql语句了,导致今天一写,直接给我整了个报错。

原因其实蛮简单的,mybatis的xml中的resultMap标签规定了内标签的顺序,写错了就会直接解析不出来,从而报错。就和sql语句一样的,定义了自己的规则.

我先说说解决方式,我们再接着聊.

2.解决方式

解决:resultMap的中顺序必须是

代码语言:javascript
复制
 <resultMap>
 ​
   <id></id>
 ​
   <result />
 ​
   ......
 ​
   <association />
 ​
   .....
 ​
   <collection/>
 ​
 </resultMap>

我们一层一层套娃的话,必须要按照这样的规则来写.

我的xml中这么写,就一直在报这个错误.

image.png
image.png

改完后:

image.png
image.png

严格按照规则来即可.

3.总结

resultMap总结

3.1 id

映射数据表中主键。另外如果resultMap 多层嵌套中有多个id,并且名字相同的话,查询的时候尽量给个别名会更好一些。

3.2 result

就是正常映射到pojo类的一个属性。

3.3 resultType:

作用:将查询结果按照sql列名pojo属性名一致性映射到pojo中。

场合:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。

3.4 resultMap:

使用association和collection完成一对一和一对多高级映射

3.5 association:

作用:将关联查询信息映射到一个pojo对象中。

场合:为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。

使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。

3.6 collection:

作用:将关联查询信息映射到一个list集合中。

场合:为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。

如果使用resultType无法将查询结果映射到list集合中。

后语

我们一起加油吧

你好,我是博主宁在春主页 希望本篇文章能让你感到有所收获!!! 祝 我们:待别日相见时,都已有所成。 欢迎大家一起讨论问题😁,躺了🛌

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.解决方式
  • 3.总结
    • 3.1 id
      • 3.2 result
        • 3.3 resultType:
          • 3.4 resultMap:
            • 3.5 association:
              • 3.6 collection:
              • 后语
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档