您好,登錄后才能下訂單哦!
在 MyBatis 中,可以使用 resultMap 或者association 標簽來實現多表聯合查詢。以下是兩種方法的簡要介紹:
首先,在映射文件中定義兩個 resultMap,分別對應兩個表的數據結構。然后,在查詢語句中使用
示例:
假設我們有兩個表:user 和 order,它們的結構如下:
user 表:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
order 表:
CREATE TABLE order (
id INT PRIMARY KEY,
user_id INT,
product VARCHAR(255),
FOREIGN KEY (user_id) REFERENCES user(id)
);
首先,在映射文件中定義兩個 resultMap:
<resultMap id="UserOrderResultMap" type="com.example.UserOrder">
<id property="id" column="user_id"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<collection property="orders" ofType="com.example.Order" column="user_id" select="com.example.OrderMapper.selectOrdersByUserId"/>
</resultMap>
<resultMap id="OrderResultMap" type="com.example.Order">
<id property="id" column="id"/>
<result property="productId" column="product"/>
<result property="userId" column="user_id"/>
</resultMap>
然后,在查詢語句中使用
<select id="selectUserWithOrders" resultMap="UserOrderResultMap">
SELECT u.id as user_id, u.name, u.email, o.id as order_id, o.product
FROM user u
LEFT JOIN order o ON u.id = o.user_id
WHERE u.id = #{userId}
</select>
在映射文件中定義一個 resultMap,并使用
示例:
使用與上面相同的 user 和 order 表結構。
首先,在映射文件中定義一個 resultMap,并使用
<resultMap id="UserOrderResultMap" type="com.example.UserOrder">
<id property="id" column="user_id"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<association property="orders" javaType="com.example.Order" column="user_id" select="com.example.OrderMapper.selectOrdersByUserId"/>
</resultMap>
然后,在查詢語句中使用
<select id="selectUserWithOrders" resultMap="UserOrderResultMap">
SELECT u.id as user_id, u.name, u.email, o.id as order_id, o.product
FROM user u
LEFT JOIN order o ON u.id = o.user_id
WHERE u.id = #{userId}
</select>
這樣,通過 MyBatis 的 resultMap 或者 association 標簽,就可以實現多表聯合查詢。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。