|
|
@@ -1,141 +0,0 @@
|
|
|
-package cn.flowbb.framework.mybatis.core.query;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-import java.util.Collection;
|
|
|
-
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
-
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
|
|
-
|
|
|
-import cn.flowbb.framework.mybatis.core.util.ArrayUtils;
|
|
|
-import cn.flowbb.framework.mybatis.core.util.ObjectUtil;
|
|
|
-
|
|
|
-/**
|
|
|
- * 拓展 MyBatis Plus QueryWrapper 类,主要增加如下功能:
|
|
|
- * <p>
|
|
|
- * 1. 拼接条件的方法,增加 xxxIfPresent 方法,用于判断值不存在的时候,不要拼接到条件中。
|
|
|
- *
|
|
|
- * @param <T> 数据类型
|
|
|
- */
|
|
|
-public class LambdaQueryWrapperX<T> extends LambdaQueryWrapper<T> {
|
|
|
-
|
|
|
- private static final long serialVersionUID = -8898497335185097393L;
|
|
|
-
|
|
|
- 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) && !ArrayUtils.isEmpty(values)) {
|
|
|
- return (LambdaQueryWrapperX<T>) super.in(column, values);
|
|
|
- }
|
|
|
- return this;
|
|
|
- }
|
|
|
-
|
|
|
- public LambdaQueryWrapperX<T> inIfPresent(SFunction<T, ?> column, Object... values) {
|
|
|
- if (ObjectUtil.isAllNotEmpty(values) && !ArrayUtils.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;
|
|
|
- }
|
|
|
-
|
|
|
-}
|