zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Springboot中使用ibatis输出日志
    openssl生成iis需要的pfx格式的证书
    SpringBoot 默认日志
    Spring @Value 默认值
    SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑
    geomesa hbase geoserver
    在hyper-v中安装centos后配置网络
    linux命令
    SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成ResultMap
    Java 获取指定包下的所有类
  • 原文地址:https://www.cnblogs.com/exmyth/p/14299622.html
Copyright © 2011-2022 走看看