diff --git a/src/main/java/com/github/yulichang/common/JoinLambdaWrapper.java b/src/main/java/com/github/yulichang/common/JoinLambdaWrapper.java index 859f359..37bc421 100644 --- a/src/main/java/com/github/yulichang/common/JoinLambdaWrapper.java +++ b/src/main/java/com/github/yulichang/common/JoinLambdaWrapper.java @@ -98,7 +98,7 @@ public class JoinLambdaWrapper extends JoinAbstractLambdaWrapper entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq, + JoinLambdaWrapper(T entity, Class entityClass, AtomicInteger paramNameSeq, Map paramNameValuePairs, MergeSegments mergeSegments, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { super.setEntity(entity); @@ -112,14 +112,9 @@ public class JoinLambdaWrapper extends JoinAbstractLambdaWrapper故 sqlSelect 不向下传递

- */ @Override protected JoinLambdaWrapper instance() { - return new JoinLambdaWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs, + return new JoinLambdaWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); } diff --git a/src/main/java/com/github/yulichang/query/MPJAbstractLambdaWrapper.java b/src/main/java/com/github/yulichang/query/MPJAbstractLambdaWrapper.java deleted file mode 100644 index 72e2463..0000000 --- a/src/main/java/com/github/yulichang/query/MPJAbstractLambdaWrapper.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.github.yulichang.query; - -import com.baomidou.mybatisplus.core.conditions.AbstractWrapper; -import com.baomidou.mybatisplus.core.toolkit.Assert; -import com.baomidou.mybatisplus.core.toolkit.LambdaUtils; -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache; -import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda; -import com.github.yulichang.toolkit.Constant; -import org.apache.ibatis.reflection.property.PropertyNamer; - -import java.util.Arrays; -import java.util.Map; - -import static java.util.stream.Collectors.joining; - -/** - * copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper} - */ -@SuppressWarnings("serial") -public abstract class MPJAbstractLambdaWrapper> - extends AbstractWrapper, Children> { - - private Map columnMap = null; - private boolean initColumnMap = false; - - @SuppressWarnings("unchecked") - @Override - protected String columnsToString(SFunction... columns) { - return columnsToString(true, columns); - } - - @SuppressWarnings("unchecked") - protected String columnsToString(boolean onlyColumn, SFunction... columns) { - return Arrays.stream(columns).map(i -> columnToString(i, onlyColumn)).collect(joining(StringPool.COMMA)); - } - - @Override - protected String columnToString(SFunction column) { - return columnToString(column, true); - } - - protected String columnToString(SFunction column, boolean onlyColumn) { - return Constant.TABLE_ALIAS + StringPool.DOT + getColumn(LambdaUtils.resolve(column), onlyColumn); - } - - /** - * 获取 SerializedLambda 对应的列信息,从 lambda 表达式中推测实体类 - *

- * 如果获取不到列信息,那么本次条件组装将会失败 - * - * @param lambda lambda 表达式 - * @param onlyColumn 如果是,结果: "name", 如果否: "name" as "name" - * @return 列 - * @throws com.baomidou.mybatisplus.core.exceptions.MybatisPlusException 获取不到列信息时抛出异常 - * @see SerializedLambda#getImplClass() - * @see SerializedLambda#getImplMethodName() - */ - private String getColumn(SerializedLambda lambda, boolean onlyColumn) { - Class aClass = lambda.getInstantiatedType(); - tryInitCache(aClass); - String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName()); - ColumnCache columnCache = getColumnCache(fieldName, aClass); - return onlyColumn ? columnCache.getColumn() : columnCache.getColumnSelect(); - } - - private void tryInitCache(Class lambdaClass) { - if (!initColumnMap) { - final Class entityClass = getEntityClass(); - if (entityClass != null) { - lambdaClass = entityClass; - } - columnMap = LambdaUtils.getColumnMap(lambdaClass); - initColumnMap = true; - } - Assert.notNull(columnMap, "can not find lambda cache for this entity [%s]", lambdaClass.getName()); - } - - private ColumnCache getColumnCache(String fieldName, Class lambdaClass) { - ColumnCache columnCache = columnMap.get(LambdaUtils.formatKey(fieldName)); - Assert.notNull(columnCache, "can not find lambda cache for this property [%s] of entity [%s]", - fieldName, lambdaClass.getName()); - return columnCache; - } -} diff --git a/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java b/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java index c4da7ac..e89193a 100644 --- a/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java +++ b/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java @@ -1,5 +1,6 @@ package com.github.yulichang.query; +import com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper; import com.baomidou.mybatisplus.core.conditions.SharedString; import com.baomidou.mybatisplus.core.conditions.query.Query; import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; @@ -28,7 +29,7 @@ import java.util.stream.Collectors; * sqlSelect 由覆盖改为追加 */ @SuppressWarnings("all") -public class MPJLambdaQueryWrapper extends MPJAbstractLambdaWrapper> +public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper> implements Query, T, SFunction>, MPJJoin> { /** @@ -112,6 +113,11 @@ public class MPJLambdaQueryWrapper extends MPJAbstractLambdaWrapper column, boolean onlyColumn) { + return Constant.TABLE_ALIAS + StringPool.DOT + super.columnToString(column, onlyColumn); + } + @SafeVarargs public final MPJLambdaQueryWrapper select(String... columns) { return select(true, columns);