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元素的區別就在這方面,其他有待補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM