Mybatis Plus条件构造器condition动态判断优化
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动态判断优化的更多相关文章
- MyBatis:条件构造器QueryWrapper方法详解
QueryWrapper 说明: 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 n ...
- MyBatis参数条件查询传入的值为0时的判断
MyBatis条件查询对字段判断是否为空一般为: <if test="testValue!=null and testValue != ''"> and test_va ...
- MyBatis:MyBatis-Plus条件构造器EntityWrapper
EntityWrapper 简介 1. MybatisPlus 通过 EntityWrapper(简称 EW,MybatisPlus 封装的一个查询条件构造器)或者 Condition(与 EW 类似 ...
- mybatis plus的条件构造器
我们在使用条件构造器的时候要使用QueryWrapper或者UpdateWrapper来充当条件语句来进行构造 QueryWrapper(LambdaQueryWrapper) 和 UpdateWra ...
- 小书MybatisPlus第2篇-条件构造器的应用及总结
一.条件构造器Wrapper Mybatis Plus为我们提供了如下的一些条件构造器,我们可以利用它们实现查询条件.删除条件.更新条件的构造. 条件构造器用于给如下的Mapper方法传参,通常情况下 ...
- Mybatis第三篇【动态SQL】
动态SQL 何为动态SQL??回顾一下我们之前写的SSH项目中,有多条件查询的情况,如下图 我们当时刚开始做的时候,是需要在Controller中判断SQL是否已经有条件了,因为SQL语句需要拼接起来 ...
- MyBatis学习 之 三、动态SQL语句
目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...
- Mybatis 系列9-强大的动态sql 语句
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- Mybatis-Plus 实战完整学习笔记(九)------条件构造器核心用法大全(上)
一.Mybatisplus通用(公共方法)CRUD,一共17种(3.0.3版),2.3系列也是这么多,这个新版本一定程度进行了改造和删减. 二.构造器UML图(3.0.3)-----实体包装器,主要用 ...
- MyBatis:学习笔记(4)——动态SQL
MyBatis:学习笔记(4)——动态SQL 如果使用JDBC或者其他框架,很多时候需要你根据需求手动拼装SQL语句,这是一件非常麻烦的事情.MyBatis提供了对SQL语句动态的组装能力,而且他只有 ...
随机推荐
- 001 (Python+水论文合集)为什么录这个合集,这个合集会讲哪些内容?
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- ide 安装eval reset插件 Pycharm 永久破解
ide 安装eval reset插件 Pycharm 永久破解 1.安装eval reset的目的 Jetbrains家的产品有一个很良心的地方,他会允许你试用30天(这个数字写死在代码里了)以评估是 ...
- KubeSphere 社区双周报 | KubeSphere 3.4.0 已发布 | 2023.7.7-7.20
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 麻将计分器微信小程序的开发
如何开发微信小程序 前言 因为最近沉迷和朋友们一起下班去打麻将,他们推荐了一个计分的小程序,就不需要每局都转账或者用扑克牌记录了,但是这个小程序不仅打开有广告,各个页面都植入了广告,用起来十分不适. ...
- 没想到,Python 还可以制作 Web 可视化页面!
一谈到Web页面,可能大家首先想到就是HTML,CSS或JavaScript. 本次小F就给大家介绍一下如何用Python制作一个数据可视化网页,使用到的是Streamlit库. 轻松的将一个Exce ...
- .NET 隐藏/自定义windows系统光标
本文介绍如何操作windows系统光标.正常我们设置/隐藏光标,只能改变当前窗体或者控件范围,无法全局操作windows光标.接到一个需求,想隐藏windows全局的鼠标光标显示,下面讲下如何操作 先 ...
- 从0.1开始学java(2)
string串池 现在都在堆中 "=="号的比较 字符串比较一般调用equals或者equalsignoreCase API来比较(后者忽略大小写) StringBuilder 可 ...
- 2024 AH CSP-S 迷惑行为大赏
洛谷专栏阅读:https://www.luogu.com.cn/article/0atx674s 一.概述 观前提示:本届CSP-S安徽省整活相较于其他省份不是那么"群英荟萃",观 ...
- IT人写好简历的原则与方法
来源: 51cto 发布时间: 2010-03-19 14:49 阅读: 3270 次 推荐: 3 原文链接 [收藏] 时常,在各大论坛看到不少的朋友在张贴简历,希望得到他人的指点. ...
- golang之context
context 用来解决 goroutine 之间退出通知.元数据传递的功能. context 使用起来非常方便.源码里对外提供了一个创建根节点 context 的函数: func Backgroun ...