使用resultMap映射的方式:java
<!-- 一對一映射 --> <!-- 訂單關聯查詢的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
使用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)對象
映射思路:圖片
<!-- =================多對多查詢=============== --> <!-- 如今執行多對多查詢 查詢用戶信息和商品信息 進行關聯--> <!-- 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