最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatisPlus中Join聯(lián)表查詢的項(xiàng)目實(shí)踐

 更新時(shí)間:2026年04月02日 10:35:58   作者:小徐敲java  
MyBatis-Plus本身并不直接支持JOIN連表查詢,可以通過自定義SQL或者使用MyBatis的原生XML配置來實(shí)現(xiàn)JOIN連表查詢,本文就來介紹一下MyBatisPlus中Join聯(lián)表查詢的項(xiàng)目實(shí)踐,感興趣的可以了解一下

MyBatis-Plus-Join官網(wǎng)

1:添加依賴

<dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join-boot-starter</artifactId>
    <version>1.5.3</version>
</dependency>
<!-- 對(duì)于的mybaits-plus版本 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.9</version>
</dependency>

2:原來寫法的Mapper類,繼承BaseMapper(其他全部不用修改)

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

2-1:修改為的繼承MPJBaseMapper

@Mapper
public interface UserMapper extends MPJBaseMapper<User> {
}

3:例子

MPJLambdaWrapper<DoorControllerSettingsDoorInfoDO> doorControllerSettingsDoorInfoDOMPJLambdaWrapper = new MPJLambdaWrapper<DoorControllerSettingsDoorInfoDO>()
        .selectAll()
        .leftJoin(DoorControllerSettingsDO.class, DoorControllerSettingsDO::getControllerNumber, DoorControllerSettingsDO::getControllerNumber);
doorControllerSettingsMapper.selectJoinList(DoorControllerSettingsDO2.class, doorControllerSettingsDO2MPJLambdaWrapper);

4:對(duì)于selectCollection和selectAssociation的使用

4-1:User 實(shí)體類

@Data
@TableName("user")
public class User {
    @TableId
    private Long id;
    private String username;
    private String password;
    private Integer age;
    private String email;
}

4-2:Address 實(shí)體類

@Data
@TableName("address")
public class Address {
    @TableId
    private Long id;
    private Long userId;  // 外鍵,關(guān)聯(lián)user.id
    private String province;
    private String city;
    private String district;
    private String detail;
}

4-3:UserDTO 數(shù)據(jù)傳輸對(duì)象

@Data
public class UserDTO {
    private Long id;
    private String username;
    private String password;
    private Integer age;
    private String email;
    // 使用List接收一對(duì)多關(guān)系
    private List<Address> addressList;
}

4-4:userMapper代碼查詢

MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<User>()
                .selectAll(User.class)
                //全部映射 不用考慮字段名重復(fù)問題(比如 id), 會(huì)對(duì)重復(fù)列自動(dòng)添加別名
                .selectCollection(Address.class, UserDTO::getAddressList)
                .leftJoin(Address.class, Address::getUserId, User::getId);
List<UserDTO> dtoList= userMapper.selectJoinList(UserDTO.class, wrapper);

4-5:生成的SQL語句,基于MPJLambdaWrapper代碼,MyBatis-Plus-Join會(huì)生成如下SQL:

SELECT 
    user.id AS user_id,
    user.username AS user_username,
    user.password AS user_password,
    user.age AS user_age,
    user.email AS user_email,
    address.id AS address_id,
    address.user_id AS address_user_id,
    address.province AS address_province,
    address.city AS address_city,
    address.district AS address_district,
    address.detail AS address_detail
FROM 
    user
LEFT JOIN 
    address ON address.user_id = user.id

4-6:執(zhí)行結(jié)果生成sql處理,MyBatis-Plus-Join會(huì)自動(dòng)處理結(jié)果集,將數(shù)據(jù)映射為:

List<UserDTO> dtoList = [
    {
        "id": 1,
        "username": "張三",
        "password": "123456",
        "age": 25,
        "email": "zhangsan@example.com",
        "addressList": [
            {
                "id": 1,
                "userId": 1,
                "province": "北京",
                "city": "北京市",
                "district": "海淀區(qū)",
                "detail": "中關(guān)村大街1號(hào)"
            },
            {
                "id": 2,
                "userId": 1,
                "province": "上海",
                "city": "上海市",
                "district": "浦東新區(qū)",
                "detail": "張江高科技園區(qū)"
            }
        ]
    },
]

注意

//使用如下方法
JoinWrappers.lambda(DoorControllerSettingsDoorInfoDO.class)
//替換
new MPJLambdaWrapper<DoorControllerSettingsDoorInfoDO>()
//使用如下方法
Wrappers.lambda(DoorControllerSettingsDoorInfoDO.class)
//替換
new LambdaWrapper<DoorControllerSettingsDoorInfoDO>()

到此這篇關(guān)于MyBatisPlus中Join聯(lián)表查詢的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)MyBatisPlus Join聯(lián)表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java斷點(diǎn)續(xù)傳功能實(shí)例(java獲取遠(yuǎn)程文件)

    java斷點(diǎn)續(xù)傳功能實(shí)例(java獲取遠(yuǎn)程文件)

    本文介紹了一種利用 Java 來實(shí)現(xiàn)斷點(diǎn)續(xù)傳的方法。
    2013-12-12
  • 關(guān)于Java多線程上下文切換的總結(jié)

    關(guān)于Java多線程上下文切換的總結(jié)

    CPU通過時(shí)間片分配算法來循環(huán)執(zhí)行任務(wù),當(dāng)前任務(wù)執(zhí)行一個(gè)時(shí)間片后會(huì)切換到下一個(gè)任務(wù)。但是,在切換前會(huì)保存上一個(gè)任務(wù)的狀態(tài),以便下次切換回這個(gè)任務(wù)時(shí),可以再次加載這個(gè)任務(wù)的狀態(tài),從任務(wù)保存到再加載的過程就是一次上下文切換,需要的朋友可以參考下
    2023-05-05
  • 劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)訓(xùn)練

    劍指Offer之Java算法習(xí)題精講二叉樹專項(xiàng)訓(xùn)練

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • 使用LambdaQueryWrapper動(dòng)態(tài)加過濾條件?動(dòng)態(tài)Lambda

    使用LambdaQueryWrapper動(dòng)態(tài)加過濾條件?動(dòng)態(tài)Lambda

    這篇文章主要介紹了使用LambdaQueryWrapper動(dòng)態(tài)加過濾條件?動(dòng)態(tài)Lambda,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • 如何理解和運(yùn)用ClassLoader

    如何理解和運(yùn)用ClassLoader

    這篇文章主要介紹了如何理解和運(yùn)用 ClassLoader,幫助大家更好的理解和使用JVM,感興趣的朋友可以了解下
    2021-01-01
  • MyBatis中的N+1問題的解決方法

    MyBatis中的N+1問題的解決方法

    本文主要介紹了MyBatis中的N+1問題的四種解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Java Arrays.asList使用方法解析

    Java Arrays.asList使用方法解析

    這篇文章主要介紹了Java Arrays.asList使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot實(shí)現(xiàn)二維碼掃碼登錄的原理及項(xiàng)目實(shí)踐

    SpringBoot實(shí)現(xiàn)二維碼掃碼登錄的原理及項(xiàng)目實(shí)踐

    本文主要介紹了SpringBoot實(shí)現(xiàn)二維碼掃碼登錄的原理及項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java的IO模型、Netty原理解析

    Java的IO模型、Netty原理解析

    Java的I/O是以流的方式進(jìn)行數(shù)據(jù)輸入輸出的,Java的類庫(kù)涉及很多領(lǐng)域的IO內(nèi)容:標(biāo)準(zhǔn)的輸入輸出,文件的操作、網(wǎng)絡(luò)上的數(shù)據(jù)傳輸流、字符串流、對(duì)象流等,這篇文章主要介紹了Java的IO模型、Netty原理詳解,需要的朋友可以參考下
    2025-03-03
  • Java中Hashtable類與HashMap類的區(qū)別詳解

    Java中Hashtable類與HashMap類的區(qū)別詳解

    Hashtable的應(yīng)用非常廣泛,HashMap是新框架中用來代替Hashtable的類,也就是說建議使用HashMap,不要使用Hashtable??赡苣阌X得Hashtable很好用,為什么不用呢?這里簡(jiǎn)單分析他們的區(qū)別。
    2016-01-01

最新評(píng)論

晋江市| 嵊泗县| 中阳县| 满城县| 青龙| 齐河县| 太谷县| 阳高县| 文化| 丘北县| 大丰市| 新津县| 永春县| 天长市| 新和县| 嘉义县| 永丰县| 和林格尔县| 宁安市| 高陵县| 昌都县| 曲阳县| 中山市| 西盟| 延庆县| 保靖县| 聂拉木县| 米泉市| 福清市| 惠水县| 新巴尔虎右旗| 和静县| 莒南县| 临清市| 洛川县| 怀安县| 承德县| 禹州市| 怀安县| 峨山| 平遥县|