mybatis 關聯對象mapper.xml的寫法


https://github.com/zfrHJ/mybaties/blob/master/mybaties/src/com/itheima/mybatits/mapper/OrdersMapperCustom.xml 

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空間特殊作用: 如果使用mapper動態代理方法,這里就需要配置mapper接口地址 -->
<mapper>
<!--根據用戶id查詢一條記錄(返回單條記錄) -->
<!-- select 標簽表示sql查詢,內容會封裝到Mapped Statement中 可以將這個select標簽稱為一個statement
id:Statement 的id 用於標識select中定義的sql,id是在同一個命名空間中不允許重復 #{}:表示一個占位符,避免sql注入
parameterType:表示輸入參數的類型 resultType:表示輸出 結果集單條記錄映射的java對象類型,select查詢的字段名和resultTyep
中屬性名一致,才能映射 #{}:表示parameter輸入參數的變量,如歌輸入參數是簡單類型,使用#{}占位符 變量名可以使用value或其其它的 -->
<select id="findUserId" parameterType="int" resultType="itheima.mybaties.po.User">
select * from user where id=#{id}
</select>
<resultMap type="orders" id="ordersUserResulMap">
<!-- id:訂單信息的唯一約束 -->
<!-- 如果由多個字段決定一條唯一記錄,id便簽需要定義多個 -->
<result column="id" property="id" />
<result column="order_number" property="order_number" />
<result column="user_id " property="user_id" />
<!-- 配置用戶映射信息 將sql查詢的用戶信息映射到orders中的user屬性中 association :用於單個失聯對象的映射 property:將關聯信息映射到orders的那個屬性
javaType: 映射屬性的類型 -->
<association property="user" javaType="com.itheima.po.User">
<!-- id:關聯的用戶信息的唯一約束 -->
<!-- property :id指定的列映射到關聯com.itheima.po.User類的那個屬性中 -->
<id column="user_id" property="id" />
<result column="username" property="username" />
<result column="address" property="address" />
</association>
</resultMap>
<!--一 對多 -->
<resultMap type="orders" id="ordersUserDetailResultMap"
extends="ordersUserResultMap">
<!-- 訂單級用戶信息,繼承ordersUserResultMap -->
<!-- 映射訂單明細信息collection:映射集合對象 property:將明細信息映射到那個集合屬性中。ofType:集合中對象的類型-->
<collection property="orserdetails" ofType="com.itheima.po.Orderdetail">
<!-- id:訂單明細的唯一約束
property:ofType指定類型的屬性
-->
<id column="orderdetail_id" property="id"/>
<result column="item_id" property="item_id"/>
<result column="item_num" property="item_num"/>
<result column="item_price" property="item_price"/>
</collection>
</resultMap>
<select id="findOrderUserDetailList" resultMap="ordersUserDetailResultMap">
SELECT
orders.*,
user.username,
user.address,
orderdetail.id orderdetail_id,
orderdetail.item_id,
orderdetail.item_num,
orderdetail.item_price
FROM
orders,
USER,
orderdetail
WHERE orders.user_id = user.id AND orders.id =
orderdetail.orders_id
</select>
<!-- 查詢訂單及訂單明細信息及商品信息 -->
<select id="findOrdersUserDetailItemList" resultMap="ordersUserDetailItemResultMap">
SELECT
orders.*,
user.username,
user.address,
orderdetail.id orderdetail_id,
orderdetail.item_id,
orderdetail.item_num,
orderdetail.item_price ,
items.item_detail,
items.item_name,
items.item_price item_price_price
FROM
orders,
USER,
orderdetail,
items
WHERE orders.user_id = user.id
AND
orders.id = orderdetail.orders_id
AND orderdetail.item_id = items.id
</select>
</mapper>


免責聲明!

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



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