From e9bfa1396ff47d171b3052a606e0931e6f93cc9c Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期四, 10 四月 2025 12:05:23 +0800 Subject: [PATCH] 还原framework代码 --- iailab-framework/iailab-common-mybatis/src/main/java/com/iailab/framework/mybatis/core/query/LambdaQueryWrapperX.java | 135 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 135 insertions(+), 0 deletions(-) diff --git a/iailab-framework/iailab-common-mybatis/src/main/java/com/iailab/framework/mybatis/core/query/LambdaQueryWrapperX.java b/iailab-framework/iailab-common-mybatis/src/main/java/com/iailab/framework/mybatis/core/query/LambdaQueryWrapperX.java new file mode 100644 index 0000000..cfca5c9 --- /dev/null +++ b/iailab-framework/iailab-common-mybatis/src/main/java/com/iailab/framework/mybatis/core/query/LambdaQueryWrapperX.java @@ -0,0 +1,135 @@ +package com.iailab.framework.mybatis.core.query; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import com.iailab.framework.common.util.collection.ArrayUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import org.springframework.util.StringUtils; + +import java.util.Collection; + +/** + * 拓展 MyBatis Plus QueryWrapper 类,主要增加如下功能: + * <p> + * 1. 拼接条件的方法,增加 xxxIfPresent 方法,用于判断值不存在的时候,不要拼接到条件中。 + * + * @param <T> 数据类型 + */ +public class LambdaQueryWrapperX<T> extends LambdaQueryWrapper<T> { + + public LambdaQueryWrapperX<T> likeIfPresent(SFunction<T, ?> column, String val) { + if (StringUtils.hasText(val)) { + return (LambdaQueryWrapperX<T>) super.like(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> inIfPresent(SFunction<T, ?> column, Collection<?> values) { + if (ObjectUtil.isAllNotEmpty(values) && !ArrayUtil.isEmpty(values)) { + return (LambdaQueryWrapperX<T>) super.in(column, values); + } + return this; + } + + public LambdaQueryWrapperX<T> inIfPresent(SFunction<T, ?> column, Object... values) { + if (ObjectUtil.isAllNotEmpty(values) && !ArrayUtil.isEmpty(values)) { + return (LambdaQueryWrapperX<T>) super.in(column, values); + } + return this; + } + + public LambdaQueryWrapperX<T> eqIfPresent(SFunction<T, ?> column, Object val) { + if (ObjectUtil.isNotEmpty(val)) { + return (LambdaQueryWrapperX<T>) super.eq(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> neIfPresent(SFunction<T, ?> column, Object val) { + if (ObjectUtil.isNotEmpty(val)) { + return (LambdaQueryWrapperX<T>) super.ne(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> gtIfPresent(SFunction<T, ?> column, Object val) { + if (val != null) { + return (LambdaQueryWrapperX<T>) super.gt(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> geIfPresent(SFunction<T, ?> column, Object val) { + if (val != null) { + return (LambdaQueryWrapperX<T>) super.ge(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> ltIfPresent(SFunction<T, ?> column, Object val) { + if (val != null) { + return (LambdaQueryWrapperX<T>) super.lt(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> leIfPresent(SFunction<T, ?> column, Object val) { + if (val != null) { + return (LambdaQueryWrapperX<T>) super.le(column, val); + } + return this; + } + + public LambdaQueryWrapperX<T> betweenIfPresent(SFunction<T, ?> column, Object val1, Object val2) { + if (val1 != null && val2 != null) { + return (LambdaQueryWrapperX<T>) super.between(column, val1, val2); + } + if (val1 != null) { + return (LambdaQueryWrapperX<T>) ge(column, val1); + } + if (val2 != null) { + return (LambdaQueryWrapperX<T>) le(column, val2); + } + return this; + } + + public LambdaQueryWrapperX<T> betweenIfPresent(SFunction<T, ?> column, Object[] values) { + Object val1 = ArrayUtils.get(values, 0); + Object val2 = ArrayUtils.get(values, 1); + return betweenIfPresent(column, val1, val2); + } + + // ========== 重写父类方法,方便链式调用 ========== + + @Override + public LambdaQueryWrapperX<T> eq(boolean condition, SFunction<T, ?> column, Object val) { + super.eq(condition, column, val); + return this; + } + + @Override + public LambdaQueryWrapperX<T> eq(SFunction<T, ?> column, Object val) { + super.eq(column, val); + return this; + } + + @Override + public LambdaQueryWrapperX<T> orderByDesc(SFunction<T, ?> column) { + super.orderByDesc(true, column); + return this; + } + + @Override + public LambdaQueryWrapperX<T> last(String lastSql) { + super.last(lastSql); + return this; + } + + @Override + public LambdaQueryWrapperX<T> in(SFunction<T, ?> column, Collection<?> coll) { + super.in(column, coll); + return this; + } + +} -- Gitblit v1.9.3