比如有一个实体类
public class AnswerDto{ //一个回复的类,一个问题可能会有多个回复
int id;
int askId;//问题id
List<String> answers; //回复的列表
}
我原本这么写,但是是错的 T0T, 应该如何将content映射到List<String>
<select id="getAns" parameterType="int" resultMap="uiy">
select
id,
ask_id AS "askId",
content
from t_answer where ask_id = #{_parameter}
</select>
<resultMap type="AnswerDto" id="uiy">
<id property="id" column="id"/>
<result property="askId" column="askId" />
<collection property="ls" ofType="string">
<constructor>
<arg column="content"/>
</constructor>
</collection>
</resultMap>
mybatis是根据
<id>
标签确定集合映射关系的, 如果一定要用你这个表的话可以这样映射楼主这里应该还少了一张表,就是问题表。
配合问题表,DTO的定义应该是这样的。
这个时候 mybatis 的关联查询解决方案有很多,我附上一个链接吧。
Mybatis关联查询(嵌套查询)
mybatis 的关联查询网上资料蛮多的,楼主可以多搜搜。
最后提一个建议,最好不要进行关联查询。数据的组装逻辑放在代码里面来做,这样方便以后 DB 的改造。因为随着数据量越来越大,关联查询性能比较糟糕,还不容易做分库分表的改造,不过这都是建立在业务有大量增长的情况下。当前的话,楼主开始培养这个意识就好啦。
表字段到复杂对象字段的映射可以采用自定义TypeHandler的方式搞定。
eg:
MyBatis里json型字段到Java类的映射
http://www.cnblogs.com/watery...