Mybatis使用问题:查询一对多或多对多时只返回一条数据的问题

Posted 阿普

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis使用问题:查询一对多或多对多时只返回一条数据的问题相关的知识,希望对你有一定的参考价值。

问题:

使用映射文件实现查询一对多或多对多时只返回一条数据问题

解决方法:

导致这种情况出现的问题是因为两个表中的主键是一样所以出现了数据覆盖问题。

解决方式一:修改数据库表中的主键(这种方法比较麻烦)。

解决方式二:在查询语句中修改一个表的主键使其不一致即可,例子:

表User主键为id,表Book主键为id,映射结果集时设置表Book的主键id为b_id即可。

<resultMap id="resultUserMap" type="books.com.boot.model.User">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="userPassword" column="user_password"/>
<result property="createUser" column="createuser"/>
<result property="createTime" column="createtime"/>
<result property="remark" column="remark"/>
<collection property="books" column="author" ofType="Book" >
<id property="id" column="b_id"/>
<result property="title" column="title"/>
<result property="author" column="author"/>
<result property="isbn" column="isbn"/>
<result property="isbnTime" column="isbn_time"/>
<result property="publisher" column="publisher"/>
<result property="decription" column="description"/>
<result property="createUser" column="createuser"/>
<result property="createTime" column="createtime"/>
</collection>
</resultMap>
备注:
属性property对应model类的属性名,column对应数据库表中的列名,其中id元素中的column可以修改为任意别名,result元素中的column列名必须与表列名一致。
目前id元素和result元素的区别就在这方面,其他有待补充。
























以上是关于Mybatis使用问题:查询一对多或多对多时只返回一条数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 PostgreSQL 中存储一对多或多对多关系的最佳方式是啥?

思考具有两个外键的一对多或多对多关系的正确方法是啥?

mybatis笔试题2

mybatis

MyBatis分页返回数据不对问题

PageHelper关联查询 统计总数问题