MybatisPlus中使用QueryWrapper实现and or和括号

随声附和 提交于 2019-12-04 06:44:56

环境介绍

Spring Boot使用版本

<version>2.0.6.RELEASE</version>

jdk使用版本

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

Mybatis-plus使用版本

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

Mybatis-plus使用的依赖

<!-- 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>

以上是项目使用的环境背景。

需求及解决方案

需求

需要实现的SQL如下:

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使用该对象实现对条件的拼接,具体实现方案参考下文。

解决方案

需要查阅LambdaQueryWrapper的使用方法,这里需要用到Lambda表达式的用法,该例实现如下

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

效果如下:

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

如果此处SQL没有括号,直接使用or即可

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表达式后,代码更加简洁,但可读性会有所提高,要酌情使用。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!