1. 程式人生 > >Mybatis中collection實現一對多的問題

Mybatis中collection實現一對多的問題

今天在使用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在資料庫中對應的欄位要唯一約束,只有這樣你才能實現一對多的效果。