RT.
当实体类存在这种格式
class A{ B b };
class B{ List<C> cList};
的时候,
myabtis在使用 resultMap 时,由于要顾及层级关系,第一个A中嵌套的B,则应该是使用 association 表达关系,第二个则用 collection 表达关系。
这时候神奇的事情出现了,当返回数据是多条时(其sql语句在mysql中使用返回6条)但是由于使用了 association , 其后使用的啃爹的 collection 则只返回一条数据了。
尝试解决方法: 1. 删除 association 相关项,让它自动寻找,结果系统报错,找不到 cList 这个东东,此解决宣告告破
2. 将association改为collection,但是由于第一个collection实际上时只有一个的,照样是返回了1条数据,而实际上却需要返回6条数据
贴一下相关mapper格式
<resultMap id="aMap" type="...A">
<id property="id" column="id"/>
<association property="b" javaType="...B">
...
<collection property="cList" ofType="...C">
...
</collection>
</association>
</resultMap>
- 由此我在尝试了多个方法之后,实在没办法只能采用偷梁换柱的方法,将cList的数据嵌套在A中,然后返回6个数据给外层的cList,然后再将外层的cList = 内层的 cList,然后外层的cList再置空
- 虽然通过小滑头方式解决了,但是我依旧不甘心,我这种偷梁换柱就是对仅学到的知识进行一次重复处理,在效率上肯定要差于一步处理的方法的,不知道有没有大哥能直接处理这种数据格式的形式用mybatis的相关resultMap一步到位?谢谢相关大哥了,大家也可以一起讨论,这种问题可能还有其它处理方法