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

mybatisplus的連表增強(qiáng)插件mybatis plus join

 更新時(shí)間:2023年06月08日 11:14:21   作者:bjdiys  
本文主要介紹了mybatisplus的連表增強(qiáng)插件mybatis plus join,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

mybatis-plus作為mybatis的增強(qiáng)工具,它的出現(xiàn)極大的簡化了開發(fā)中的數(shù)據(jù)庫操作,但是長久以來,它的聯(lián)表查詢能力一直被大家所詬病。一旦遇到left join或right join的左右連接,你還是得老老實(shí)實(shí)的打開xml文件,手寫上一大段的sql語句。

偶然碰到了這么一款叫做mybatis-plus-join的工具(后面就簡稱mpj了),使用了一下,不得不說真香!徹底將我從xml地獄中解放了出來,終于可以以類似mybatis-plus中QueryWrapper的方式來進(jìn)行聯(lián)表查詢了,話不多說,我們下面開始體驗(yàn)。

插件文檔 https://mybatisplusjoin.com

插件Github倉庫 https://github.com/yulichang/mybatis-plus-join

一、添加依賴

在pom中添加 mybatis plus join依賴

<!-- mpj 依賴 -->
<dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join-boot-starter</artifactId>
    <version>1.4.4.1</version>
</dependency>
<!-- mp 依賴 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

二、創(chuàng)建實(shí)體

添加兩個(gè)數(shù)據(jù)庫實(shí)體類 User 和 Address 和結(jié)果類 UserDTO

這里用lombok簡單代碼

@Data
@ToString
@TableName("area")
public class User {
    @TableId
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
@Data
@ToString
@TableName("address")
public class Address {
    @TableId
    private Long id;
    private Long userId;
    private String city;
    private String address;
}
@Data
@ToString
public class UserDTO{
? ? private Long id;
? ? private Long userId;
? ? private String city;
? ? private String address;
?? ?//地址列表 用于接下來的一對(duì)多映射查詢
?? ?private List<Address> addressList;
?? ?//地址 用于接下來的一對(duì)一映射查詢
?? ?private Address address;
}

三、創(chuàng)建mapper

添加mapper并且繼承MPJBaseMapper

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

四、連表查詢測試

實(shí)體和mapper都建好了就可以直接用了~~

@SpringBootTest
public class SampleTest {
? ? @Autowired
? ? private UserMapper userMapper;
? ? @Test
? ? public void testSelect() {
? ? ? ? MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<User>()
? ? ? ? ? ? ? ? .selectAll(User.class)//查詢user表全部字段
? ? ? ? ? ? ? ? .select(Address::getCity, Address::getAddress)
? ? ? ? ? ? ? ? .leftJoin(Address.class, Address::getUserId, User::getId);
? ? ? ? List<UserDTO> userList = userMapper.selectJoinList(UserDTO.class, wrapper);
? ? ? ? userList.forEach(System.out::println);
? ? }
}

sql打印

SELECT t.id,t.name,t.age,t.email,t2.city,t2.address FROM user t LEFT JOIN address t1 ON t1.user_id = t.id

控制臺(tái)輸出

User(id=1, name=Jone, age=18, email=test1@baomidou.com,city=北京,address=人民廣場)
User(id=2, name=Jack, age=20, email=test2@baomidou.com,city=上海,address=人民廣場)
User(id=3, name=Tom, age=28, email=test3@baomidou.com,city=廣州,address=人民廣場)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com,city=上海,address=人民廣場)
User(id=5, name=Billie, age=24, email=test5@baomidou.com,city=北京,address=人民廣場)

連表分頁也是很常用的功能,MPJ也支持,調(diào)用selectJoinPage()就可以了

@SpringBootTest
public class SampleTest {
? ? @Autowired
? ? private UserMapper userMapper;
? ? @Test
? ? public void testSelect() {
? ? ? ? MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<User>()
? ? ? ? ? ? ? ? .selectAll(User.class)//查詢user表全部字段
? ? ? ? ? ? ? ? .select(Address::getCity, Address::getAddress)
? ? ? ? ? ? ? ? .leftJoin(Address.class, Address::getUserId, User::getId);
? ? ? ? Page<UserDTO> page= userMapper.selectJoinPage(new Page(1,10), UserDTO.class, wrapper);
? ? }
}

sql打印可以看到多了分頁方言

SELECT t.id,t.name,t.age,t.email,t2.city,t2.address FROM user t LEFT JOIN address t1 ON t1.user_id = t.id LIMIT ?

小結(jié):
通過以上幾個(gè)簡單的步驟,我們就實(shí)現(xiàn)了 User 表的連表功能,甚至連 XML 文件都不用編寫!
從以上步驟中,我們可以看到集成MyBatis-Plus-Join非常的簡單,只需要引入 starter 工程即可。
但 MyBatis-Plus-Join 的強(qiáng)大遠(yuǎn)不止這些功能,
可以查閱插件文檔 https://mybatisplusjoin.com/
接下來測試一對(duì)多和一對(duì)一映射查詢

五、一對(duì)多、一對(duì)一映射

一對(duì)多 selectCollection

@SpringBootTest
public class SampleTest {
? ? @Autowired
? ? private UserMapper userMapper;
? ? @Test
? ? public void testSelect() {
? ? ? ? MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<User>()
? ? ? ? ? ? ? ? .selectAll(User.class)//查詢user表全部字段
? ? ? ? ? ? ? ? .selectCollection(Address::getCity, UserDTO::getAddressList)
? ? ? ? ? ? ? ? .leftJoin(Address.class, Address::getUserId, User::getId);
? ? ? ? List<UserDTO> userList = userMapper.selectJoinList(UserDTO.class, wrapper);
? ? }
}

一對(duì)一 selectAssociation

@SpringBootTest
public class SampleTest {
? ? @Autowired
? ? private UserMapper userMapper;
? ? @Test
? ? public void testSelect() {
? ? ? ? MPJLambdaWrapper<User> wrapper = new MPJLambdaWrapper<User>()
? ? ? ? ? ? ? ? .selectAll(User.class)//查詢user表全部字段
? ? ? ? ? ? ? ? .selectAssociation(Address::getCity, UserDTO::getAddress)
? ? ? ? ? ? ? ? .leftJoin(Address.class, Address::getUserId, User::getId);
? ? ? ? List<UserDTO> userList = userMapper.selectJoinList(UserDTO.class, wrapper);
? ? }
}

六、總結(jié)

通過以上幾個(gè)簡單的步驟,我們就實(shí)現(xiàn)了 User 表的連表功能,甚至連 XML 文件都不用編寫!
從以上步驟中,我們可以看到集成MyBatis-Plus-Join非常的簡單,只需要引入 starter 工程即可。
但 MyBatis-Plus-Join 的強(qiáng)大遠(yuǎn)不止這些功能,想要詳細(xì)了解 MyBatis-Plus-Join 的強(qiáng)大功能?
可以查閱插件文檔 https://mybatisplusjoin.com/

到此這篇關(guān)于mybatisplus的連表增強(qiáng)插件mybatis plus join的文章就介紹到這了,更多相關(guān)mybatis plus join內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中throw和throws異常處理完整例子說明

    Java中throw和throws異常處理完整例子說明

    這篇文章主要給大家介紹了關(guān)于Java中throw和throws異常處理的相關(guān)資料, throw關(guān)鍵字是用于在方法內(nèi)拋出異常,而throws關(guān)鍵字是在方法聲明中指定可能拋出的異常,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 配置hadoop環(huán)境mapreduce連接不上hdfs解決

    配置hadoop環(huán)境mapreduce連接不上hdfs解決

    這篇文章主要為大家介紹了配置hadoop環(huán)境mapreduce連接不上hdfs解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • java實(shí)現(xiàn)象棋小游戲

    java實(shí)現(xiàn)象棋小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)象棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 一文徹底搞懂Java中的回調(diào)函數(shù)

    一文徹底搞懂Java中的回調(diào)函數(shù)

    回調(diào)是一種常見的編程模式,允許一個(gè)函數(shù)在特定事件或任務(wù)完成后,調(diào)用另一個(gè)預(yù)先定義的函數(shù),這篇文章主要介紹了Java中回調(diào)函數(shù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-01-01
  • MyBatis關(guān)聯(lián)查詢的實(shí)現(xiàn)

    MyBatis關(guān)聯(lián)查詢的實(shí)現(xiàn)

    MyBatis可以通過定義多個(gè)表的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)多表查詢,本文主要介紹了MyBatis關(guān)聯(lián)查詢的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • JavaEE微框架Spring Boot深入解讀

    JavaEE微框架Spring Boot深入解讀

    spring框架作為JavaEE框架領(lǐng)域的一款重要的開源框架,在企業(yè)應(yīng)用開發(fā)中有著很重要的作用。接下來通過本文給大家介紹JavaEE微框架Spring Boot深入解讀,需要的朋友可以參考下
    2017-04-04
  • SpringBoot集成MinIO實(shí)現(xiàn)分布式文件存儲(chǔ)與管理方式

    SpringBoot集成MinIO實(shí)現(xiàn)分布式文件存儲(chǔ)與管理方式

    這篇文章主要介紹了SpringBoot集成MinIO實(shí)現(xiàn)分布式文件存儲(chǔ)與管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-09-09
  • Maven依賴管理之parent與dependencyManagement深入分析

    Maven依賴管理之parent與dependencyManagement深入分析

    首先我們來說說parent標(biāo)簽,其實(shí)這個(gè)不難解釋,就是父的意思,pom也有繼承的。比方說我現(xiàn)在有A,B,C,A是B,C的父級(jí)?,F(xiàn)在就是有一個(gè)情況B,C其實(shí)有很多jar都是共同的,其實(shí)是可以放在父項(xiàng)目里面,這樣,讓B,C都繼承A就方便管理了
    2022-10-10
  • mybatis 無參構(gòu)造器的使用

    mybatis 無參構(gòu)造器的使用

    本文主要介紹了MyBatis中無參構(gòu)造器的重要性和應(yīng)用,無參構(gòu)造器在Java類中具有特殊的意義,它確保了即使在沒有提供任何參數(shù)的情況下,也能夠創(chuàng)建對(duì)象并對(duì)其進(jìn)行初始化,下面就來介紹一下
    2024-10-10
  • Java中成員方法與成員變量訪問權(quán)限詳解

    Java中成員方法與成員變量訪問權(quán)限詳解

    在Java學(xué)習(xí)過程中,在寫類經(jīng)常為用到public,private和protected,我個(gè)人的經(jīng)驗(yàn)是一般類的成員變量都是用private,方法用public,類的內(nèi)部用protected方法,如果是存在子類的,那我就會(huì)把父類中的成員變量變?yōu)閜rotected。(其余的看具體實(shí)際情 況而定)
    2015-08-08

最新評(píng)論

团风县| 集安市| 铜陵市| 田阳县| 河南省| 南投县| 聂拉木县| 灵寿县| 鹤庆县| 马鞍山市| 卢湾区| 开封县| 两当县| 双桥区| 嵊州市| 富阳市| 远安县| 南和县| 卢氏县| 集贤县| 金门县| 莱芜市| 炎陵县| 金川县| 潜江市| 静安区| 读书| 阳西县| 衡南县| 繁昌县| 利辛县| 昌邑市| 景谷| 大同县| 宁夏| 玉门市| 兰州市| 浪卡子县| 陕西省| 阳原县| 鹰潭市|