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

今天在解决mybatis一对多的时候遇到如下问题:


一时百思不得其解,不知道如何下手,还在怀疑自己一对多关系是不是写错了。百度并试验后发现错误如下:


后来在网上搜索答案才发现:“必须匹配”也包括了括号内元素的顺序,也就是必须按照先写constructor,再写id,再写result,再写association……这样的顺序,在此association必须在collection前,而我正好反了修正后错误解决。

resultMap总结

resultType

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

  场合

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

resultMap

  使用associationcollection完成一对一和一对多高级映射(对结果有特殊的映射要求)。

association

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

  场合

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

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

collection

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

  场合

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

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



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值