Mbatis高級映射

1 一對一映射

使用resultMap映射的方式:java

一對一resultMap

<!-- 一對一映射 -->
<!-- 訂單關聯查詢的resultMap 
	將整個結果映射到com.shi.POJO的Orders中
-->
<resultMap type="com.shi.POJO.Orders" id="ordersUserResultMap">
 <!-- 配置映射的訂單信息 -->
	<!-- id:指定查詢列中的惟一標識,訂單信息中的惟一標識,若是有多個列組成惟一標識,配置多個id 
		column:指定查詢列中的惟一標識,若是有多個列組成惟一標識,配置多個id
		property:訂單信息的惟一標識 ,列所映射到orders中哪一個屬性
	-->
	<id column="id" property="id"/>
	<result column="user_id" property="user_id"/>
	<result column="number" property="number"/>
	<result column="createtime" property="createtime"/>
	<result column="note" property="note"/>
 <!-- 配置映射的關聯的用戶信息 -->
 	<!-- association:用於映射關聯查詢單個對象的信息
 	propety: 要將關聯查選的用戶信息映射到Orders中哪一個屬性 -->
 	<association property="user" javaType="com.shi.POJO.User">
 		<!-- id :關聯查詢用戶的惟一標識
 		column:指定惟一標識用戶信息的列
 		property:映射到user的哪一個屬性	-->
 		<id column="user_id" property="id"/>
 		<result column="username" property="username"/>
 		<result column="birthday" property="birthday"/>
 		<result column="sex" property="sex"/>
 		<result column="address" property="address"/>
 	</association>
</resultMap>

<select id="findOrderCastomResultMap" resultMap="ordersUserResultMap">
	SELECT orders.*,user.username,user.sex,user.birthday FROM orders,USER WHERE
	orders.user_id=user.id
</select>

對resultType 和 resultMap 的總結:sql

輸入圖片說明

2 一對多映射

使用resultMap實現一對多映射:code

<!-- ================一對多映射================ -->
	
	<!-- 一對多映射查詢  查詢訂單 ,用戶信息 及訂單明細表 
	 -->
	 <!-- rusultMap配置      注意:若是上面有重複的東西 可使用  extends="" -->
	 <resultMap type="com.shi.POJO.Orders" id="OrdersAndOrderDetailResultMap" >
<!-- 訂單信息 -->
	 	<id column="id" property="id"/>
	 	<result column="user_id" property="user_id"/>
	 	<result column="number" property="number"/>
	 	<result column="createtime" property="createtime"/>
	 	<result column="note" property="note"/>
<!-- 用戶信息 -->
	 	<association property="user" javaType="com.shi.POJO.User">
	 		<id column="user_id" property="id"/>
	 		<result column="username" property="username"/>
	 		<result column="birthday" property="birthday"/>
	 		<result column="sex" property="sex"/>
	 		<result column="address" property="address"/>
	 	</association>
<!-- 訂單明細信息 -->
	 	<!-- 
	 		一個訂單關聯查詢出來了多條明細,因此要使用collection進行映射
	 		collection:對查詢到多條記錄映射到集合對象中去
	 		property:將關聯查詢到的多條記錄映射到該orderdetailList屬性中去
	 		ofType:指定映射到list集合屬性中pojo的類型
	 	 -->
	 	 <collection property="orderdetailList" ofType="com.shi.POJO.Orderdetail">
	 	 	<!-- id:訂單明細表的惟一標識
	 	 	property:要將訂單明細的惟一標識映射到com.shi.POJO.Orderdetail 的哪一個屬性 -->
	 	 	<id column="orderdetail_id" property="id"/>
	 	 	<result column="items_id" property="items_id"/>
	 	 	<result column="orders_id" property="orders_id"/>
	 	 	<result column="items_num" property="items_num"/>
	 	 </collection>
	 	
	 </resultMap>	 
	 <!-- sql語句 -->
	<select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap">
		SELECT
			orders.*,
			user.username,
			user.sex,
			user.address,
			orderdetail.id orderdetail_id, <!-- 注意:這裏須要collection中的id  因此 不能和上面屬性衝突 -->
			orderdetail.items_id,
			orderdetail.orders_id,
			orderdetail.items_num
		FROM
			orders,
			USER,
			orderdetail
		WHERE 
			orders.user_id=user.id AND orderdetail.orders_id=orders.id
	</select>

對resultType 和 resultMap的總結:(一對多建議使用 resultMap對象

輸入圖片說明

3 多對多查詢

映射思路:圖片

輸入圖片說明

<!-- =================多對多查詢=============== -->
		<!-- 如今執行多對多查詢  查詢用戶信息和商品信息 進行關聯-->
	<!-- resultMap映射 -->
		<resultMap type="com.shi.POJO.User" id="UserAndItemsReusltMap">
			<!-- 對用戶信息進行映射 -->
			<id column="user_id" property="id"/>
			<result column="username" property="username"/>
			<result column="birthday" property="birthday"/>
			<result column="sex" property="sex"/>
			<result column="address" property="address"/>
			
			<!-- 對訂單進行映射   ######一對多映射######-->
			<collection property="orders" ofType="com.shi.POJO.Orders">
				<id column="id" property="id"/>
				<result column="user_id" property="user_id"/>
				<result column="number" property="number"/>
				<result column="createtime" property="createtime"/>
				<result column="note" property="note"/>
				
				<!-- 對訂單細節進行映射 ######一對多映射######-->
				<collection property="orderdetailList" ofType="com.shi.POJO.Orderdetail">
					<id column="" property=""/>
					<result column="orderdetail_id" property="id"/>
					<result column="orders_id" property="orders_id"/>
					<result column="items_id" property="items_id"/>
					<result column="items_num" property="items_num"/>
					
					<!-- 對商品表進行映射  ######一對一映射###### -->
					<association property="items" javaType="com.shi.POJO.Items">
						<id column="items_id" property="id"/>
						<result column="items_name" property="name"/>
						<result column="items_price" property="price"/>
					</association>
				</collection>
			</collection>
		</resultMap>
	<!-- sql語句 -->
	<select id="findUserAndItemsReusltMap" resultMap="UserAndItemsReusltMap">
		SELECT 
			orders.*,
			user.username,
			user.sex,
			user.address,
			orderdetail.id orderdetail_id,
			orderdetail.items_id,
			orderdetail.orders_id,
			orderdetail.items_num,
			items.name items_name,
			items.price items_price
		FROM
			orders,
			USER,
			orderdetail,
			items
		WHERE 
			orders.user_id=user.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id=items.id
		
	</select>

總結:ci

輸入圖片說明

相關文章
相關標籤/搜索