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

MyBatisPlus中Join聯(lián)表查詢的項目實踐

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

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>
<!-- 對于的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:對于selectCollection和selectAssociation的使用

4-1:User 實體類

@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 實體類

@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ù)傳輸對象

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

4-4:userMapper代碼查詢

MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<User>()
                .selectAll(User.class)
                //全部映射 不用考慮字段名重復(fù)問題(比如 id), 會對重復(fù)列自動添加別名
                .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會生成如下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會自動處理結(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號"
            },
            {
                "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)表查詢的項目實踐的文章就介紹到這了,更多相關(guān)MyBatisPlus Join聯(lián)表查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java斷點續(xù)傳功能實例(java獲取遠程文件)

    java斷點續(xù)傳功能實例(java獲取遠程文件)

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

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

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

    劍指Offer之Java算法習題精講二叉樹專項訓練

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

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

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

    如何理解和運用ClassLoader

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

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

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

    Java Arrays.asList使用方法解析

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

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

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

    Java的IO模型、Netty原理解析

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

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

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

最新評論

芦山县| 体育| 黎川县| 开封市| 武平县| 镇原县| 许昌市| 连州市| 类乌齐县| 增城市| 大安市| 梅河口市| 温宿县| 茂名市| 西贡区| 敦化市| 寻甸| 威信县| 武穴市| 勃利县| 那曲县| 宣城市| 花莲市| 芷江| 新津县| 阿瓦提县| 余姚市| 丘北县| 九龙城区| 罗城| 广元市| 安岳县| 类乌齐县| 乌苏市| 金湖县| 北辰区| 保定市| 双辽市| 六枝特区| 旺苍县| 华容县|