java - Mybatis 一对多怎么映射
问题描述
比如有一个实体类
public class AnswerDto{ //一个回复的类,一个问题可能会有多个回复 int id; int askId;//问题id List<String> answers; //回复的列表}

我原本这么写,但是是错的 T0T, 应该如何将content映射到List<String>
<select 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>
问题解答
回答1:mybatis是根据<id>标签确定集合映射关系的, 如果一定要用你这个表的话可以这样映射
<id column='askId' property='askId' /><result column='id' property='id'/><collection property='answers' ofType='java.lang.String' javaType='java.util.List'> <result column='content' /></collection>回答2:
楼主这里应该还少了一张表,就是问题表。
配合问题表,DTO的定义应该是这样的。
public class QuestionDTO { int questionId; String questionDesc; List<AnswerDTO> answers; // Answers of the question int created; // 创建时间 int updated; // 更新时间}public class AnswerDTO{ //一个回复的类,一个问题可能会有多个回复 int id; int questionId; // 问题id String content; // 答案内容 int created; // 创建时间 int updated; // 更新时间}
这个时候 mybatis 的关联查询解决方案有很多,我附上一个链接吧。
Mybatis关联查询(嵌套查询)
mybatis 的关联查询网上资料蛮多的,楼主可以多搜搜。
最后提一个建议,最好不要进行关联查询。数据的组装逻辑放在代码里面来做,这样方便以后 DB 的改造。因为随着数据量越来越大,关联查询性能比较糟糕,还不容易做分库分表的改造,不过这都是建立在业务有大量增长的情况下。当前的话,楼主开始培养这个意识就好啦。
回答3:表字段到复杂对象字段的映射可以采用自定义TypeHandler的方式搞定。eg:MyBatis里json型字段到Java类的映射http://www.cnblogs.com/watery...
相关文章:
1. docker网络端口映射,没有方便点的操作方法么?2. docker api 开发的端口怎么获取?3. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~4. 请问“由于 Cookie “PHPSESSID”的“SameSite”属性设置为“None”,但缺少“Secure”属性,此 Cookie 未来将被拒绝。”请问出现这个问题怎么办?5. golang - 用IDE看docker源码时的小问题6. docker容器呢SSH为什么连不通呢?7. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题8. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?9. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?10. docker不显示端口映射呢?

网公网安备