MybatisPlus中使用QueryWrapper實現and or和括號

環境介紹

Spring Boot使用版本html

<version>2.0.6.RELEASE</version>

jdk使用版本java

<java.version>1.8</java.version>

Mybatis-plus使用版本mybatis

<mybatis-plus.version>3.1.0</mybatis-plus.version>

Mybatis-plus使用的依賴app

<!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!-- 代碼生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>

以上是項目使用的環境背景。ide

需求及解決方案

需求

須要實現的SQL以下:ui

select t1.CT_ID, t1.TITLE, t1.SUBTITLE, t1.CON, t1.CON_H5, t1.ABSTRACT_STRING, t1.AUTHOR, t1.CT_TIME, t1.KW, t1.IS_AUTODIS, t1.DIS_TIME, t1.AU_STATE, t1.PUB_STATE, t1.DEL_TAG, t1.PUB_OPT, t1.PUB_TIME, t1.LIKE_NUM, t1.READ_NUM, t1.COVER_PATH, t1.CONTENT_TYP, t1.URL, t1.IS_TIMEING, t1.TIMEING_DATE, t1.CRT_OPT, t1.CRT_TIME, t1.UPD_OPT, t1.UPD_TIME, t1.REMARK 
from PCM_ARTICLE t1 
WHERE ( au_state = '1' OR au_state = '2' ) AND pub_state = '0' and t1.DEL_TAG = '0'

(com.baomidou.mybatisplus.core.conditions.query)LambdaQueryWrapper使用該對象實現對條件的拼接,具體實現方案參考下文。code

解決方案

須要查閱LambdaQueryWrapper的使用方法,這裏須要用到Lambda表達式的用法,該例實現以下htm

queryWrapper.and(Wrapper -> Wrapper.eq(PcmArticle::getAuState, "1").or().eq(PcmArticle::getAuState, "2"));

效果以下:對象

WHERE ( au_state = '1' OR au_state = '2' )

若是此處SQL沒有括號,直接使用or便可get

queryWrapper.or();

參考資料:

https://mp.baomidou.com/guide/wrapper.html

有關Lambda表達式的部分能夠參照百度百科

https://baike.baidu.com/item/Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F/4585794?fr=aladdin

Java8中一個Lambda的簡單例子:

//匿名內部類寫法
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("內部類寫法");
            }
        }).start();

使用Lambda表達式後,效果:

//lambda 寫法
        new Thread(() -> System.out.println("lambda寫法")).start();

使用Lambda表達式後,代碼更加簡潔,但可讀性會有所提升,要酌情使用。

相關文章
相關標籤/搜索