1、问题场景:
mybatis使用collection查询集合属性:即实现一个对象里面挂在一个list,通过一个sql语句或者通过嵌套子查询的方式查询得到数据。
不熟悉的请查阅 https://www.cnblogs.com/heliusKing/p/11173362.html
2、使用参考
https://blog.youkuaiyun.com/lzxomg/article/details/89739651 的第二个方法。但是出现了问题:
对应的 options 为空list。
3、问题原因:
本次分析,没有定位源码,一个一个的去debug,而是直接拿出来eclipse执行sql之后的语句在sql工具上执行,根据经验解决问题。
3.1 mybtis配置
<resultMap id="BaseResultMap" type="com.xxx.modules.xxx.entity.Question" >
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="content" property="content" jdbcType="VARCHAR" />
<result column="type" property="type" jdbcType="VARCHAR" />
<result column="sort" property="sort" jdbcType="INTEGER" />
<collection property="options" javaType="java.util.ArrayList" ofType="com.xxx.modules.data.entity.QuestionOption">
<id column="o.id" property="id" jdbcType="VARCHAR" />
<result column="o.content" property="content" jdbcType="VARCHAR" />
<result column="o.sort" property="sort" jdbcType="INTEGER" />
</collection>
</resultMap>
3.2 问题定位或者分析
通过在sql工具上执行,得到最终的sql字段存在别名,即字段名拼接1的情况。故配置属性和字段匹配的时候,不符合映射规则,所以list为空。
解决之前
解决之后