目錄
???前言:
???一對一關(guān)聯(lián)查詢:
???一對多關(guān)聯(lián)查詢:
????下面是上面代碼中所涉及到的實(shí)體類結(jié)構(gòu)設(shè)計(jì):
???一對一關(guān)聯(lián)查詢:
???用戶實(shí)體類(User):
???用戶詳情實(shí)體類(UserDetail):
???一對多關(guān)聯(lián)查詢:
???訂單實(shí)體類(Order):
???訂單詳情實(shí)體類(OrderDetail):
???下面是上面代碼中所涉及到的表結(jié)構(gòu)設(shè)計(jì):
???一對一關(guān)聯(lián)查詢:
???用戶表(user):
???用戶詳情表(user_detail):
???一對多關(guān)聯(lián)查詢:
???訂單表(order):
???訂單詳情表(order_detail):
???數(shù)據(jù)格式:
???在一對多關(guān)聯(lián)查詢中,查詢結(jié)果的格式通常是一個(gè)主表記錄對應(yīng)多個(gè)從表記錄,即一個(gè)主表記錄對應(yīng)一個(gè)包含多個(gè)從表記錄的集合。以訂單表(order)和訂單詳情表(order_detail)為例,查詢結(jié)果的格式如下:
???在一對一關(guān)聯(lián)查詢中,查詢結(jié)果的格式通常是一個(gè)主表記錄對應(yīng)一個(gè)從表記錄,即一個(gè)主表記錄對應(yīng)一個(gè)從表記錄對象。以用戶表(user)和用戶詳情表(user_detail)為例,查詢結(jié)果的格式如下:
??前言:
???感覺要寫一些通俗易懂的,
??上一篇直接使用mybatis注解來實(shí)現(xiàn)?, 這篇使用框架提供的標(biāo)簽映射來實(shí)現(xiàn), 主打就是一個(gè)全面
??下面是映射版本地址:
[Mybatis注解版的 一對一和一對多實(shí)現(xiàn)過程 ]_是湯圓丫的博客-CSDN博客
???一對一關(guān)聯(lián)查詢:
假設(shè)有兩個(gè)表,一個(gè)是用戶表(user),另一個(gè)是用戶詳情表(user_detail),它們之間是一對一的關(guān)系,即一個(gè)用戶對應(yīng)一個(gè)用戶詳情。下面是一對一關(guān)聯(lián)查詢的Mapper.xml配置文件:
<!-- 查詢用戶及其詳情信息 -->
<select id="getUserWithDetail" resultMap="userWithDetail">
SELECT u.*, d.*
FROM user u
LEFT JOIN user_detail d ON u.id = d.user_id
WHERE u.id = #{id}
</select>
<!-- 定義結(jié)果集 -->
<resultMap id="userWithDetail" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="email" column="email"/>
<result property="detail" column="id" resultMap="userDetail"/>
</resultMap>
<resultMap id="userDetail" type="UserDetail">
<id property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="realName" column="real_name"/>
<result property="age" column="age"/>
<result property="address" column="address"/>
</resultMap>
在上面的配置文件中,我們定義了一個(gè)查詢用戶及其詳情信息的SQL語句,并且定義了兩個(gè)結(jié)果集,一個(gè)是userWithDetail,另一個(gè)是userDetail。其中,userWithDetail結(jié)果集中包含了user表和user_detail表的所有字段,同時(shí)還包含了一個(gè)detail屬性,該屬性的值是一個(gè)UserDetail對象,它通過resultMap屬性引用了userDetail結(jié)果集。
???一對多關(guān)聯(lián)查詢:
假設(shè)有兩個(gè)表,一個(gè)是訂單表(order),另一個(gè)是訂單詳情表(order_detail),它們之間是一對多的關(guān)系,即一個(gè)訂單對應(yīng)多個(gè)訂單詳情。下面是一對多關(guān)聯(lián)查詢的Mapper.xml配置文件:
<!-- 查詢訂單及其詳情信息 -->
<select id="getOrderWithDetails" resultMap="orderWithDetails">
SELECT o.*, d.*
FROM order o
LEFT JOIN order_detail d ON o.id = d.order_id
WHERE o.id = #{id}
</select>
<!-- 定義結(jié)果集 -->
<resultMap id="orderWithDetails" type="Order">
<id property="id" column="id"/>
<result property="orderNo" column="order_no"/>
<result property="createTime" column="create_time"/>
<result property="details" column="id" resultMap="orderDetail"/>
</resultMap>
<resultMap id="orderDetail" type="OrderDetail">
<id property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="productName" column="product_name"/>
<result property="price" column="price"/>
<result property="quantity" column="quantity"/>
</resultMap>
在上面的配置文件中,我們定義了一個(gè)查詢訂單及其詳情信息的SQL語句,并且定義了兩個(gè)結(jié)果集,一個(gè)是orderWithDetails,另一個(gè)是orderDetail。其中,orderWithDetails結(jié)果集中包含了order表的所有字段,同時(shí)還包含了一個(gè)details屬性,該屬性的值是一個(gè)List對象,它通過resultMap屬性引用了orderDetail結(jié)果集。
????下面是上面代碼中所涉及到的實(shí)體類結(jié)構(gòu)設(shè)計(jì):
???一對一關(guān)聯(lián)查詢:
???用戶實(shí)體類(User):
public class User {
private int id;
private String username;
private String password;
private String email;
private UserDetail detail; // 一對一關(guān)聯(lián)
// getter和setter方法
}
???用戶詳情實(shí)體類(UserDetail):
public class UserDetail {
private int id;
private int userId;
private String realName;
private int age;
private String address;
// getter和setter方法
}
???一對多關(guān)聯(lián)查詢:
???訂單實(shí)體類(Order):
public class Order {
private int id;
private String orderNo;
private Date createTime;
private List<OrderDetail> details; // 一對多關(guān)聯(lián)
// getter和setter方法
}
???訂單詳情實(shí)體類(OrderDetail):
public class OrderDetail {
private int id;
private int orderId;
private String productName;
private double price;
private int quantity;
// getter和setter方法
}
在實(shí)體類中,我們通過定義屬性來表示表中的字段,同時(shí)還定義了一對一和一對多的關(guān)聯(lián)關(guān)系。在一對一關(guān)聯(lián)中,用戶實(shí)體類中的detail屬性表示用戶詳情,它的類型是UserDetail類;在一對多關(guān)聯(lián)中,訂單實(shí)體類中的details屬性表示訂單詳情列表,它的類型是List類。
???下面是上面代碼中所涉及到的表結(jié)構(gòu)設(shè)計(jì):
???一對一關(guān)聯(lián)查詢:
???用戶表(user):
字段名 | 類型 | 描述 |
---|---|---|
id | int | 用戶ID |
username | varchar | 用戶名 |
password | varchar | 密碼 |
varchar | 郵箱地址 |
???用戶詳情表(user_detail):
字段名 | 類型 | 描述 |
---|---|---|
id | int | 用戶詳情ID |
user_id | int | 用戶ID |
real_name | varchar | 真實(shí)姓名 |
age | int | 年齡 |
address | varchar | 地址 |
???一對多關(guān)聯(lián)查詢:
???訂單表(order):
字段名 | 類型 | 描述 |
---|---|---|
id | int | 訂單ID |
order_no | varchar | 訂單號(hào) |
create_time | date | 創(chuàng)建時(shí)間 |
???訂單詳情表(order_detail):
字段名 | 類型 | 描述 |
---|---|---|
id | int | 訂單詳情ID |
order_id | int | 訂單ID |
product_name | varchar | 商品名稱 |
price | double | 商品價(jià)格 |
quantity | int | 商品數(shù)量 |
???數(shù)據(jù)格式:
???在一對多關(guān)聯(lián)查詢中,查詢結(jié)果的格式通常是一個(gè)主表記錄對應(yīng)多個(gè)從表記錄,即一個(gè)主表記錄對應(yīng)一個(gè)包含多個(gè)從表記錄的集合。以訂單表(order)和訂單詳情表(order_detail)為例,查詢結(jié)果的格式如下:
{
"id": 1,
"orderNo": "202201010001",
"createTime": "2022-01-01",
"details": [
{
"id": 1,
"orderId": 1,
"productName": "商品1",
"price": 100.0,
"quantity": 2
},
{
"id": 2,
"orderId": 1,
"productName": "商品2",
"price": 200.0,
"quantity": 1
}
]
}
在上面的JSON格式中,我們可以看到一個(gè)訂單記錄對應(yīng)了兩個(gè)訂單詳情記錄,它們被封裝在一個(gè)List集合中。在Java代碼中文章來源:http://www.zghlxwxcb.cn/news/detail-526696.html
???在一對一關(guān)聯(lián)查詢中,查詢結(jié)果的格式通常是一個(gè)主表記錄對應(yīng)一個(gè)從表記錄,即一個(gè)主表記錄對應(yīng)一個(gè)從表記錄對象。以用戶表(user)和用戶詳情表(user_detail)為例,查詢結(jié)果的格式如下:
{
"id": 1,
"username": "test",
"password": "123456",
"email": "test@example.com",
"detail": {
"id": 1,
"userId": 1,
"realName": "張三",
"age": 20,
"address": "北京市"
}
}
在上面的JSON格式中,我們可以看到一個(gè)用戶記錄對應(yīng)了一個(gè)用戶詳情記錄,它們被封裝在一個(gè)UserDetail對象中,然后作為User對象的detail屬性的值。在Java代碼中,我們可以通過User類的detail屬性來獲取這個(gè)UserDetail對象,然后獲取用戶詳情記錄的信息。文章來源地址http://www.zghlxwxcb.cn/news/detail-526696.html
到了這里,關(guān)于[Mybatis的一對一和一對多]的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!