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

Mybatis?Plus?QueryWrapper復(fù)合用法詳解

 更新時(shí)間:2022年01月11日 10:57:06   作者:LGVT  
這篇文章主要介紹了Mybatis?Plus?QueryWrapper復(fù)合用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

QueryWrapper復(fù)合用法

Mybatis Plus作為一個(gè)強(qiáng)大的msql插件,簡(jiǎn)化了DAO許多操作,使得我們的代碼看上去更加優(yōu)雅一些;

這里主要記錄一下QueryWrapper的復(fù)雜查詢(xún)用法

LambdaQueryWrapper<T> queryWrapper = new QueryWrapper<T>().lambda();
queryWrapper.eq(DTO::gexxx, param);
queryWrapper.and(wrapper -> wrapper
        .eq(T::getxxx, param)
        .or()
        .like(T::getxxx, param));

使用QueryWrapper小結(jié)

mybatisplus自定義分頁(yè)查詢(xún)

接口:

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//實(shí)現(xiàn)類(lèi)
?public PageList pageQuery(PageArgument pageArgument) ?{
? ? ? ? //放入查詢(xún)參數(shù)
? ? ? ? QueryWrapper queryWrapper=new ?QueryWrapper ();
? ? ? ? //注意放入?yún)?shù)格式,關(guān)聯(lián)查詢(xún)要寫(xiě)別名
? ? ? ? queryWrapper.eq(StringUtils.isNotBlank(user.getId()), "b.id",user.getId());
? ? ??
? ? ? ? Page page = new Page();
? ? ? ? IPage<TestUser> temp = testMapper.pageQueryBaseline(new Page<TestUser>(pageArgument.getPage(), pageArgument.getRows()), queryWrapper);
? ? ? ? PageList pageList = new PageList();
? ? ? ? pageList.setTotal(temp.getTotal());
? ? ? ? pageList.setPageNum(pageArgument.getPage());
? ? ? ? pageList.setPageSize(pageArgument.getRows());
? ? ? ? pageList.setList(temp.getRecords());
? ? ? ? return pageList;
}
---------------------------------------------------------------------------
//Mapper接口
@Mapper
public interface TestMapper extends BaseMapper<TestUser> {
? ? <E extends IPage<TestUser>> E pageQueryTestUser(E page, @Param(Constants.WRAPPER) Wrapper<TestUser> queryWrapper);
}
--------------------------------------------------------------------------
sql自定義:
?<!-- 分頁(yè)查詢(xún)-->
? ? <select id="pageQueryTestUser" resultType="TestUser">
? ? ? ? ? ? select b.* from TestUser b
? ? ? ? ? ? inner join TestStudent ?i on i.id=b.id ?${ew.customSqlSegment}
? ? </select>

其中ew.customSqlSegment

對(duì)應(yīng)條件構(gòu)造器queryWrapper里的條件,會(huì)在sql中自動(dòng)拼接,不需要在sql中再寫(xiě)判斷條件userId=#{userId}這樣的。

QueryWrapper 設(shè)置參數(shù)幾種格式

queryWrapper.eq(“userid”,“aa”); //相當(dāng)于userid=#{userid}
queryWrapper.like(“userid”,“aa”); //相當(dāng)于模糊查詢(xún)
queryWrapper.eq(StringUtils.isNotBlank(user.getId()), “b.id”,user.getId()); //先判斷這個(gè)參數(shù)是不是空,為空則不放入,不為空則放入?yún)?shù)
queryWrapper.isNull(“userid”) //相當(dāng)于where userid is null

有關(guān)queryWrapper使用or條件時(shí)

把or條件單獨(dú)隔離,不影響后邊的條件

import java.util.function.Consumer;
?QueryWrapper queryWrapper = new QueryWrapper();
? ?Consumer<QueryWrapper> consumer = qw -> {
? ? ? ? ? ? ? ? qw.eq("module", "b管理");
? ? ? ? ? ? ? ? qw.or();
? ? ? ? ? ? ? ? qw.eq("module", "a管理");
? ? ? ? ? ? };
queryWrapper.and(consumer);
queryWrapper.eq("name", "123");

這樣拼接出來(lái)的條件就是,Consumer就相當(dāng)于一個(gè)括號(hào)把or條件獨(dú)立了

where (module=‘a(chǎn)管理' or module=‘b管理') and name='123'

不用Consumer直接用.or(),就會(huì)導(dǎo)致條件變成這樣:

where module=a管理' or module=‘b管理' and name=‘123'
or后邊是—> module=‘b管理' and name=‘123'

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微服務(wù)和分布式的區(qū)別詳解

    微服務(wù)和分布式的區(qū)別詳解

    在本篇文章里小編給各位整理了關(guān)于微服務(wù)和分布式的區(qū)別以及相關(guān)知識(shí)點(diǎn)總結(jié),有興趣的朋友們學(xué)習(xí)下。
    2019-07-07
  • Java實(shí)現(xiàn)九九乘法表的小例子

    Java實(shí)現(xiàn)九九乘法表的小例子

    九九乘法表一般為三角形,每個(gè)數(shù)分別和從1到自身的數(shù)相乘然后把結(jié)果列出來(lái),即要用到兩層循環(huán),外層是從1到9for(i=1;i<=9;i++),內(nèi)層是當(dāng)前數(shù)和從1到自身相乘for(j=1;j<=i;j++)
    2013-09-09
  • 常用Maven庫(kù),鏡像庫(kù)及maven/gradle配置(小結(jié))

    常用Maven庫(kù),鏡像庫(kù)及maven/gradle配置(小結(jié))

    這篇文章主要介紹了常用Maven庫(kù),鏡像庫(kù)及maven/gradle配置(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解Java?ReentrantReadWriteLock讀寫(xiě)鎖的原理與實(shí)現(xiàn)

    詳解Java?ReentrantReadWriteLock讀寫(xiě)鎖的原理與實(shí)現(xiàn)

    ReentrantReadWriteLock讀寫(xiě)鎖是使用AQS的集大成者,用了獨(dú)占模式和共享模式。本文和大家一起理解下ReentrantReadWriteLock讀寫(xiě)鎖的實(shí)現(xiàn)原理,需要的可以了解一下
    2022-10-10
  • 詳細(xì)總結(jié)Java組合模式

    詳細(xì)總結(jié)Java組合模式

    今天帶大家了解Java設(shè)計(jì)模式中的組合模式,下文中對(duì)組合模式介紹的非常詳細(xì),還有相關(guān)代碼,對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Springboot mybatis常見(jiàn)配置問(wèn)題解決

    Springboot mybatis常見(jiàn)配置問(wèn)題解決

    這篇文章主要介紹了Springboot mybatis常見(jiàn)配置問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Springboot整合mybatis的步驟

    Springboot整合mybatis的步驟

    這篇文章主要介紹了Springboot整合mybatis的步驟,幫助大家更好的理解和學(xué)習(xí)使用
    2021-04-04
  • 詳解Spring Boot中使用@Scheduled創(chuàng)建定時(shí)任務(wù)

    詳解Spring Boot中使用@Scheduled創(chuàng)建定時(shí)任務(wù)

    本篇文章中主要介紹了Spring Boot中使用@Scheduled創(chuàng)建定時(shí)任務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • hashset去除重復(fù)值原理實(shí)例解析

    hashset去除重復(fù)值原理實(shí)例解析

    這篇文章主要介紹了hashset去除重復(fù)值原理實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Maven發(fā)布項(xiàng)目到Nexus私有服務(wù)器

    Maven發(fā)布項(xiàng)目到Nexus私有服務(wù)器

    本文主要介紹了Maven發(fā)布項(xiàng)目到Nexus私有服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論