欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MybatisPlus多表連接查詢的具體實(shí)現(xiàn)

 更新時(shí)間:2023年10月18日 15:37:47   作者:bjdiys  
MyBatis Plus是一款針對(duì)MyBatis框架的增強(qiáng)工具, 它提供了很多方便的方法來實(shí)現(xiàn)多表聯(lián)查,本文主要介紹了MybatisPlus多表連接查詢的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

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.5</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 String name;
    private Integer age;
    private String email;

	//address關(guān)聯(lián)表中的兩個(gè)字段
    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> {

}

四、連表查詢測(cè)試

實(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=人民廣場(chǎng))
User(id=2, name=Jack, age=20, email=test2@baomidou.com,city=上海,address=人民廣場(chǎng))
User(id=3, name=Tom, age=28, email=test3@baomidou.com,city=廣州,address=人民廣場(chǎng))
User(id=4, name=Sandy, age=21, email=test4@baomidou.com,city=上海,address=人民廣場(chǎng))
User(id=5, name=Billie, age=24, email=test5@baomidou.com,city=北京,address=人民廣場(chǎng))

連表分頁也是很常用的功能,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/接下來測(cè)試一對(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多表連接查詢的具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MybatisPlus多表連接查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java正則驗(yàn)證電話,手機(jī),郵箱,日期,金額的方法示例

    Java正則驗(yàn)證電話,手機(jī),郵箱,日期,金額的方法示例

    這篇文章主要介紹了Java正則驗(yàn)證電話,手機(jī),郵箱,日期,金額的方法,結(jié)合具體實(shí)例形式分析了Java針對(duì)電話,手機(jī),郵箱,日期,金額的正則判定操作技巧,需要的朋友可以參考下
    2017-03-03
  • java中Collections.sort排序函數(shù)用法詳解

    java中Collections.sort排序函數(shù)用法詳解

    本篇文章主要介紹了java中Collections.sort排序函數(shù)用法詳解,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • OpenFeign設(shè)置header的三種方式總結(jié)

    OpenFeign設(shè)置header的三種方式總結(jié)

    在微服務(wù)間使用Feign進(jìn)行遠(yuǎn)程調(diào)用時(shí)需要在header中添加信息,下面這篇文章主要給大家介紹了關(guān)于OpenFeign設(shè)置header的三種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Java快速實(shí)現(xiàn)圖書管理基本功能

    Java快速實(shí)現(xiàn)圖書管理基本功能

    隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對(duì)圖書館的日常工作進(jìn)行管理勢(shì)在必行,本篇文章涵蓋一個(gè)圖書管理系統(tǒng)的基本功能實(shí)現(xiàn)代碼,大家可以查缺補(bǔ)漏,提升水平
    2022-05-05
  • 冒泡排序算法原理及JAVA實(shí)現(xiàn)代碼

    冒泡排序算法原理及JAVA實(shí)現(xiàn)代碼

    關(guān)鍵字較小的記錄好比氣泡逐趟上浮,關(guān)鍵字較大的記錄好比石塊下沉,每趟有一塊最大的石塊沉底
    2014-01-01
  • Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制

    Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制

    Spring?MVC中提供了一個(gè)通用的異常處理機(jī)制,它提供了一個(gè)成熟、簡潔并且清晰的異常處理方案。當(dāng)使用Spring?MVC開發(fā)Web應(yīng)用時(shí),利用這套現(xiàn)成的機(jī)制進(jìn)行異常處理也更加自然并且高效
    2022-04-04
  • 在java中使用dom4j解析xml(示例代碼)

    在java中使用dom4j解析xml(示例代碼)

    鑒于目前的趨勢(shì),我們這里來講講Dom4j的基本用法,不涉及遞歸等復(fù)雜操作。Dom4j的用法很多,官網(wǎng)上的示例有那么點(diǎn)兒晦澀,這里就不寫了
    2013-10-10
  • java調(diào)用shell命令并獲取執(zhí)行結(jié)果的示例

    java調(diào)用shell命令并獲取執(zhí)行結(jié)果的示例

    今天小編就為大家分享一篇java調(diào)用shell命令并獲取執(zhí)行結(jié)果的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java觀察者模式是一種行為型設(shè)計(jì)模式,用于實(shí)現(xiàn)對(duì)象間的一對(duì)多依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),它的所有依賴對(duì)象都會(huì)收到通知并自動(dòng)更新。觀察者模式可以實(shí)現(xiàn)松耦合,增強(qiáng)了系統(tǒng)的可維護(hù)性和可拓展性
    2023-04-04
  • 深入淺析Random類在高并發(fā)下的缺陷及JUC對(duì)其的優(yōu)化

    深入淺析Random類在高并發(fā)下的缺陷及JUC對(duì)其的優(yōu)化

    這篇文章主要介紹了Random類在高并發(fā)下的缺陷及JUC對(duì)其的優(yōu)化 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04

最新評(píng)論