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. pytorch: grad can be implicitly created only for scalar outputs

    运行这段代码 import torch import numpy as np import matplotlib.pyplot as plt x = torch.ones(2,2,requires_g ...

  2. 墨天轮专访TDengine陶建辉:坚持做难而正确的事,三次创业成就不悔人生

    导读: 时序数据库(Time Series Database)在最近几年被越来越多的用户接受并使用,并有广泛的应用场景.云原生时序数据库 TDengine 一直稳居墨天轮时序数据库榜首,其近期的海外发 ...

  3. 9. JS的数据类型,区别

    js 有2大数据类型分类 : 基本数据类型: 1. string 字符串 使用单.双引号包裹,或者使用反引号包裹 2. number 数字类型 3. boolean 布尔值 true false 4. ...

  4. 【Azure Cloud Service】使用RESTAPI更新Cloud Service(Extended Support) 中所配置的证书

    问题描述 当根据Cloud Service (Extended Support) 文档更新证书 ( https://docs.azure.cn/zh-cn/cloud-services-extende ...

  5. 基于QToolButton封装,解决Icon不能设置hover和press态的问题

    1 #pragma once 2 #include <QToolButton> 3 #include <QBoxLayout> 4 #include <QLabel> ...

  6. 彻底搞懂ScheduledThreadPoolExecutor

    前言 项目中经常会遇到一些非分布式的调度任务,需要在未来的某个时刻周期性执行.实现这样的功能,我们有多种方式可以选择: Timer类, jdk1.3引入,不推荐. 它所有任务都是串行执行的,同一时间只 ...

  7. DashText-快速开始

    快速开始 DashText,是向量检索服务DashVector推荐使用的稀疏向量编码器(Sparse Vector Encoder),DashText可通过BM25算法将原始文本转换为稀疏向量(Spa ...

  8. 题解 NOIP2014 提高组-联合权值

    题解 NOIP2014 提高组-联合权值 基本思路:以每个点为中转点,则与之相邻的点组成的点对都可产生联合权值,并且全覆盖. 主要总结一下两种求权值和的思路: 思路1(容斥):记与 \(u\) 相邻的 ...

  9. 还在为慢速数据传输苦恼?Linux 零拷贝技术来帮你!

    前言 程序员的终极追求是什么?当系统流量大增,用户体验却丝滑依旧?没错!然而,在大量文件传输.数据传递的场景中,传统的"数据搬运"却拖慢了性能.为了解决这一痛点,Linux 推出了 ...

  10. 【性能测试】01基础知识篇-并发用户、RPS、TPS的解读

    本文介绍并发用户.RPS.TPS的基本概念以及三者之间的关系. 术语定义 并发用户:在性能测试工具中,一般称为虚拟用户(Virtual User,简称VU),指的是现实系统中操作业务的用户. 说明 并 ...