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. 解决Spring Data JPA Hibernate的N+1查询问题的性能优化最佳方法

    最佳方法:定制@NamedEntityGraph.定制查询和定制VO,可以做到按照需要最佳查询,需要注意的地方:定制VO的字段一定要等于或小于实际查询的字段,才不会复制的时候触发N+1查询. 1 问题 ...

  2. 16. VUE怎么阻止冒泡

    给事件添加 stop 修饰符 ,比如 click.stop  ; 补充: 阻止默认行为 prevent 修饰符 ,超链接的跳转,表单的默认提交 : once 修饰符 事件只触发一次 ps:事件修饰符可 ...

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

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

  4. KubeSphere 部署 Kafka 集群实战指南

    本文档将详细阐述如何利用 Helm 这一强大的工具,快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群. 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名 IP C ...

  5. 混合云下的 Kubernetes 多集群管理与应用部署

    本文是上海站 Meetup 中讲师李宇根据其分享内容梳理成的文章 大家好,很高兴来到今天下午的 Meetup.我先简单做个自我介绍,我叫李宇,目前是 KubeSphere 的一名研发,主要负责多集群方 ...

  6. 云原生爱好者周刊:开源替代品开始围剿 Docker Desktop

    云原生一周动态要闻: Docker 更新和扩展了产品订阅 NGINX Ingress Controller 1.0.0 发布 Tanzu 应用平台的公开测试版发布 IBM 开源 Tornjak Kub ...

  7. WinSCP 脚本实现将 jar 包一键上传 Ubuntu 并 docker 部署

    准备 首先,在 Ubuntu 写一个.sh 脚本用于自动更新 jar 包的 docker 容器和镜像,然后在 Windows 写一个.bat 脚本用于上传 jar 包并运行.sh 脚本. deploy ...

  8. 快速搭建k8s

    换桥接模式,换sealos 桥接模式 部署出问题了,用这个: ipconfig 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . ...

  9. vue中事件总线bus的用法

    ./util/Bus.js import Bus from 'vue'; let install = function (Vue) { // 设置eventBus Vue.prototype.bus ...

  10. Computersystemsicherheit学习笔记

    1.Verlässliche System 1.1 Security和Safety的区别 1.2 Fault,Error和Failure的区别 举例如下: 1.3 Verfügbarkeit 例题: ...