Mybatis中collection實現一對多的問題
阿新 • • 發佈:2019-02-02
今天在使用Mybatis中的Collection獲取集合資訊時,資料庫中對應了多條資料,但在做單元測試時只能獲取到一條資料。
糾結了很久,突然想到是不是主鍵的問題,結果一試,還真是這麼回事。
Mybatis中id和result的唯一不同是id表示的結果將是當比較物件例項時用到的標識屬性。這幫助來改進整體表現,特別是快取和嵌入結果對映。因此在不同的資料中要對ID進行唯一處理,不然就會出現類似我只能檢視一條資料。
<resultMap type="OrderBaseInfo" id="orderBaseMap"> <id property="orderId" column="order_id" /> <result property="orderGroupNo" column="order_group_id" /> </resultMap> <resultMap type="OrderBaseGroup" id="orderBaseGroupMap"> <id property="orderGroupNo" column="order_group_id" /> <result property="patientId" column="pat_id" /> <collection property="orderItems" resultMap="orderBaseMap" /> </resultMap>
例如上面mybatis檔案中,orderId和orderGroupNo在資料庫中對應的欄位要唯一約束,只有這樣你才能實現一對多的效果。