ConditionQueryWrapper
package com.common.util;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.ObjectUtils; /**
* @author exmyth
* @version 1.0.0
* @date 2021-01-19 17:06
*/
public class ConditionQueryWrapper<T> extends QueryWrapper<T> { @Override
public LambdaConditionQueryWrapper<T> lambda() {
return new LambdaConditionQueryWrapper(super.lambda());
} @Override
public ConditionQueryWrapper<T> between(String column, Object val1, Object val2) {
super.between(ObjectUtils.isNotEmpty(val1)&&ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public ConditionQueryWrapper<T> eq(String column, Object val) {
super.eq(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> le(boolean condition, String column, Object val) {
super.le(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> lt(String column, Object val) {
super.lt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> ge(boolean condition, String column, Object val) {
super.ge(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> gt(String column, Object val) {
super.gt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> like(String column, Object val) {
super.like(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> likeLeft(boolean condition, String column, Object val) {
super.likeLeft(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> likeRight(boolean condition, String column, Object val) {
super.likeRight(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> ne(boolean condition, String column, Object val) {
super.ne(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionQueryWrapper<T> notBetween(boolean condition, String column, Object val1, Object val2) {
super.notBetween(ObjectUtils.isNotEmpty(val1) && ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public ConditionQueryWrapper<T> notLike(boolean condition, String column, Object val) {
super.notLike(ObjectUtils.isNotEmpty(val), column, val);
return this;
}
}
LambdaConditionQueryWrapper
package com.common.util;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import org.apache.commons.lang3.ObjectUtils; /**
* @author exmyth
* @version 1.0.0
* @date 2021-01-19 17:11
*/
public class LambdaConditionQueryWrapper<T> extends LambdaQueryWrapper<T>{ private final LambdaQueryWrapper<T> wrapper; public LambdaConditionQueryWrapper(LambdaQueryWrapper<T> wrapper) {
this.wrapper = wrapper;
} public LambdaQueryWrapper<T> wrapper(){
return this.wrapper;
} @Override
public LambdaConditionQueryWrapper<T> between(boolean condition, SFunction<T, ?> column, Object val1, Object val2) {
wrapper.between(ObjectUtils.isNotEmpty(val1)&&ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public LambdaConditionQueryWrapper<T> eq(SFunction<T, ?> column, Object val) {
wrapper.eq(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> le(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.le(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> lt(SFunction<T, ?> column, Object val) {
wrapper.lt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> ge(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.ge(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> gt(SFunction<T, ?> column, Object val) {
wrapper.gt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> like(SFunction<T, ?> column, Object val) {
wrapper.like(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> likeLeft(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.likeLeft(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> likeRight(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.likeRight(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> ne(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.ne(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionQueryWrapper<T> notBetween(boolean condition, SFunction<T, ?> column, Object val1, Object val2) {
wrapper.notBetween(ObjectUtils.isNotEmpty(val1) && ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public LambdaConditionQueryWrapper<T> notLike(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.notLike(ObjectUtils.isNotEmpty(val), column, val);
return this;
}
}
ConditionUpdateWrapper

package com.common.util;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.ObjectUtils; /**
* @author exmyth
* @version 1.0.0
* @date 2021-01-19 19:22
*/
public class ConditionUpdateWrapper<T> extends UpdateWrapper<T> {
@Override
public LambdaConditionUpdateWrapper<T> lambda() {
return new LambdaConditionUpdateWrapper<T>(super.lambda());
} @Override
public ConditionUpdateWrapper<T> between(String column, Object val1, Object val2) {
super.between(ObjectUtils.isNotEmpty(val1)&&ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public ConditionUpdateWrapper<T> eq(String column, Object val) {
super.eq(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> le(boolean condition, String column, Object val) {
super.le(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> lt(String column, Object val) {
super.lt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> ge(boolean condition, String column, Object val) {
super.ge(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> gt(String column, Object val) {
super.gt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> like(String column, Object val) {
super.like(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> likeLeft(boolean condition, String column, Object val) {
super.likeLeft(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> likeRight(boolean condition, String column, Object val) {
super.likeRight(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> ne(boolean condition, String column, Object val) {
super.ne(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public ConditionUpdateWrapper<T> notBetween(boolean condition, String column, Object val1, Object val2) {
super.notBetween(ObjectUtils.isNotEmpty(val1) && ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public ConditionUpdateWrapper<T> notLike(boolean condition, String column, Object val) {
super.notLike(ObjectUtils.isNotEmpty(val), column, val);
return this;
}
}


LambdaConditionUpdateWrapper
package com.common.util;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import org.apache.commons.lang3.ObjectUtils; /**
* @author exmyth
* @version 1.0.0
* @date 2021-01-19 19:23
*/
public class LambdaConditionUpdateWrapper<T> extends LambdaUpdateWrapper<T> {
private final LambdaUpdateWrapper<T> wrapper; public LambdaConditionUpdateWrapper(LambdaUpdateWrapper<T> wrapper) {
this.wrapper = wrapper;
} @Override
public LambdaConditionUpdateWrapper<T> between(boolean condition, SFunction<T, ?> column, Object val1, Object val2) {
wrapper.between(ObjectUtils.isNotEmpty(val1)&&ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> eq(SFunction<T, ?> column, Object val) {
wrapper.eq(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> le(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.le(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> lt(SFunction<T, ?> column, Object val) {
wrapper.lt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> ge(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.ge(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> gt(SFunction<T, ?> column, Object val) {
wrapper.gt(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> like(SFunction<T, ?> column, Object val) {
wrapper.like(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> likeLeft(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.likeLeft(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> likeRight(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.likeRight(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> ne(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.ne(ObjectUtils.isNotEmpty(val), column, val);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> notBetween(boolean condition, SFunction<T, ?> column, Object val1, Object val2) {
wrapper.notBetween(ObjectUtils.isNotEmpty(val1) && ObjectUtils.isNotEmpty(val2), column, val1, val2);
return this;
} @Override
public LambdaConditionUpdateWrapper<T> notLike(boolean condition, SFunction<T, ?> column, Object val) {
wrapper.notLike(ObjectUtils.isNotEmpty(val), column, val);
return this;
}
}

Mybatis Plus条件构造器condition动态判断优化的更多相关文章

  1. MyBatis:条件构造器QueryWrapper方法详解

    QueryWrapper 说明:      继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 n ...

  2. MyBatis参数条件查询传入的值为0时的判断

    MyBatis条件查询对字段判断是否为空一般为: <if test="testValue!=null and testValue != ''"> and test_va ...

  3. MyBatis:MyBatis-Plus条件构造器EntityWrapper

    EntityWrapper 简介 1. MybatisPlus 通过 EntityWrapper(简称 EW,MybatisPlus 封装的一个查询条件构造器)或者 Condition(与 EW 类似 ...

  4. mybatis plus的条件构造器

    我们在使用条件构造器的时候要使用QueryWrapper或者UpdateWrapper来充当条件语句来进行构造 QueryWrapper(LambdaQueryWrapper) 和 UpdateWra ...

  5. 小书MybatisPlus第2篇-条件构造器的应用及总结

    一.条件构造器Wrapper Mybatis Plus为我们提供了如下的一些条件构造器,我们可以利用它们实现查询条件.删除条件.更新条件的构造. 条件构造器用于给如下的Mapper方法传参,通常情况下 ...

  6. Mybatis第三篇【动态SQL】

    动态SQL 何为动态SQL??回顾一下我们之前写的SSH项目中,有多条件查询的情况,如下图 我们当时刚开始做的时候,是需要在Controller中判断SQL是否已经有条件了,因为SQL语句需要拼接起来 ...

  7. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

  8. Mybatis 系列9-强大的动态sql 语句

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

  9. Mybatis-Plus 实战完整学习笔记(九)------条件构造器核心用法大全(上)

    一.Mybatisplus通用(公共方法)CRUD,一共17种(3.0.3版),2.3系列也是这么多,这个新版本一定程度进行了改造和删减. 二.构造器UML图(3.0.3)-----实体包装器,主要用 ...

  10. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)——动态SQL 如果使用JDBC或者其他框架,很多时候需要你根据需求手动拼装SQL语句,这是一件非常麻烦的事情.MyBatis提供了对SQL语句动态的组装能力,而且他只有 ...

随机推荐

  1. .Net 反射的学习

    // 反射 // 一切从 type 开始 2 种拿到 type 的方式 // 作用:动态的操作对象 获取属性 方法 特性 // 1. 拿到对象的 type // typeof(类); // 2. 拿到 ...

  2. 密码学承诺之原理和应用 - Kate多项式承诺

    主页 微信公众号:密码应用技术实战 博客园首页:https://www.cnblogs.com/informatics/ GIT地址:https://github.com/warm3snow 简介 多 ...

  3. 04 统计语言模型(n元语言模型)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  4. work中模板、主题、样式集、样式的作用和使用方法

    [收藏]Word样式.样式集.主题.模版怎么区分?进来围观学习了~ 我们先来按照层次关系从小到大排序:样式<样式集<主题<模板 接下来,我们按照层次关系从小到大开始了解它们之间的的区 ...

  5. 还在使用昂贵的虚拟机?来试试 Devbox,便宜 6 倍!

    这篇小短文来介绍一下用虚拟机的场景是怎么被 Devbox 全方位碾压的. Devbox 唯一弱点是公网出口的地方不分配独立的 IP 地址,但是这对我们绝大多数场景是没有影响的,通过域名和端口访问我们的 ...

  6. 一、Tomcat基础知识与运行原理

    本章节为介绍如何安装Tomcat工具以及其主要架构知识概念,深入浅出让新人玩家理解为什么选择该容器以及该容器的优点 web服务器 概念 服务器:安装了服务器软件的计算机 服务器软件:接收用户的请求,处 ...

  7. 通过自定义字符串内插处理程序(InterpolatedStringHandler)和CallerArgumentExpression特性来实现一个好玩的场景

    背景知识介绍 什么是自定义字符串内插处理程序? 简单来讲就是自定义一个高性能的字符串拼接程序 通过 $"{a}{b}"的方式. 什么是CallerArgumentExpressio ...

  8. 这十年我与广告不共戴天练就的十八般武艺 #PC去广告 #手机去广告

    背景 大家应该都体会过广告的苦恼,比如看着好看的电视,突然给播放广告,这时候痛苦系数飙升.随着社会进步,广告的载体,还有形式也越来越多,比如手机端各种APP启动广告,PC端软件弹窗,网站Banner等 ...

  9. IPV6改造 华为云如此简单

    现在很多企业都在搞这个IPV6改造,说实话这个IPV6改造我这边也不是特别精通,也是通过查阅各种资料来了解IPV6这个东西,下面是我查的一些资料大家可以借鉴一下. IPv6改造三步曲--Vecloud ...

  10. Machine Learning Week_1 Parameter Learning 1-6

    目录 3 Parameter Learning 3.1 Video: Gradient Descent unfamiliar words 3.2 Reading:Gradient Descent un ...