From 99dc3b0f9c59445d04499b14d1fc4ec986d22491 Mon Sep 17 00:00:00 2001 From: admin <570810310@qq.com> Date: Thu, 25 Mar 2021 18:01:16 +0800 Subject: [PATCH] [issues](https://gitee.com/best_handsome/mybatis-plus-join/issues/I3D74N) --- .../common/JoinAbstractLambdaWrapper.java | 15 +- .../yulichang/common/JoinAbstractWrapper.java | 2 + .../query/MPJLambdaQueryWrapper.java | 179 +++++++++--------- .../yulichang/query/MPJQueryWrapper.java | 122 +++++++----- .../wrapper/MPJJoinLambdaQueryWrapper.java | 108 +++++------ 5 files changed, 214 insertions(+), 212 deletions(-) diff --git a/src/main/java/com/github/yulichang/common/JoinAbstractLambdaWrapper.java b/src/main/java/com/github/yulichang/common/JoinAbstractLambdaWrapper.java index 20f8630..93d65fe 100644 --- a/src/main/java/com/github/yulichang/common/JoinAbstractLambdaWrapper.java +++ b/src/main/java/com/github/yulichang/common/JoinAbstractLambdaWrapper.java @@ -17,31 +17,20 @@ import static java.util.stream.Collectors.joining; /** * copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper} + * + * @author yulichang */ @SuppressWarnings("serial") public abstract class JoinAbstractLambdaWrapper> extends JoinAbstractWrapper { - private Map columnMap = null; - private boolean initColumnMap = false; - protected final Map, String> subTable = new HashMap<>(); - @SuppressWarnings("unchecked") - protected String columnsToString(SFunction... columns) { - return columnsToString(true, columns); - } - @Override protected String columnToString(X column) { return columnToString((SFunction) column, true); } - @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 columnsToString(X... columns) { return Arrays.stream(columns).map(i -> columnToString((SFunction) i, true)).collect(joining(StringPool.COMMA)); diff --git a/src/main/java/com/github/yulichang/common/JoinAbstractWrapper.java b/src/main/java/com/github/yulichang/common/JoinAbstractWrapper.java index 1ec4b3b..7bd11e7 100644 --- a/src/main/java/com/github/yulichang/common/JoinAbstractWrapper.java +++ b/src/main/java/com/github/yulichang/common/JoinAbstractWrapper.java @@ -29,6 +29,8 @@ import static java.util.stream.Collectors.joining; /** * copy {@link com.baomidou.mybatisplus.core.conditions.AbstractWrapper} + * + * @author yulichang */ @SuppressWarnings({"serial", "unchecked"}) public abstract class JoinAbstractWrapper> extends Wrapper diff --git a/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java b/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java index fcb919a..f6f1eeb 100644 --- a/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java +++ b/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java @@ -8,29 +8,32 @@ import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; -import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.github.yulichang.query.interfaces.MPJJoin; import com.github.yulichang.toolkit.Constant; +import com.github.yulichang.toolkit.LambdaUtils; +import org.springframework.util.Assert; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Predicate; import java.util.stream.Collectors; /** - * copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper} + * 不推荐使用这wrapper + * 这种既有string又有lambda对开发人员并不友好 + *

+ * 推荐使用以下两个类 : + * String -> {@link MPJQueryWrapper} + * lambda -> {@link com.github.yulichang.wrapper.MPJJoinLambdaQueryWrapper} *

- * sqlSelect 由覆盖改为追加 * * @author yulichang */ -@SuppressWarnings("all") +@Deprecated public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper> implements Query, T, SFunction>, MPJJoin> { @@ -49,27 +52,20 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper selectColumns = new ArrayList<>(); + + /** + * 排除的字段 + */ + private List ignoreColumns = new ArrayList<>(); /** * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) */ public MPJLambdaQueryWrapper() { - this((T) null); - } - - /** - * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) - */ - public MPJLambdaQueryWrapper(T entity) { - super.setEntity(entity); - super.initNeed(); - } - - /** - * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) - */ - public MPJLambdaQueryWrapper(Class entityClass) { - super.setEntityClass(entityClass); super.initNeed(); } @@ -78,7 +74,8 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq, Map paramNameValuePairs, MergeSegments mergeSegments, - SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { + SharedString lastSql, SharedString sqlComment, SharedString sqlFirst, + List selectColumns, List ignoreColumns) { super.setEntity(entity); super.setEntityClass(entityClass); this.paramNameSeq = paramNameSeq; @@ -89,6 +86,8 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper extends AbstractLambdaWrapper select(SFunction... columns) { - return select(true, columns); + if (ArrayUtils.isNotEmpty(columns)) { + for (SFunction s : columns) { + selectColumns.add(columnToString(s, false)); + } + } + return typedThis; } + /** + * 忽略查询字段 + *

+ * 用法: selectIgnore("t.id","t.sex","a.area") + * + * @since 1.1.3 + */ + public MPJLambdaQueryWrapper selectIgnore(String... columns) { + if (ArrayUtils.isNotEmpty(columns)) { + ignoreColumns.addAll(Arrays.asList(columns)); + } + return typedThis; + } + + /** + * 忽略查询字段 + *

+ * 用法: selectIgnore("t.id","t.sex","a.area") + * + * @since 1.1.3 + */ @SafeVarargs - public final MPJLambdaQueryWrapper select(boolean condition, SFunction... columns) { - if (condition && ArrayUtils.isNotEmpty(columns)) { - String s = columnsToString(false, columns); - if (StringUtils.isBlank(sqlSelect.getStringValue())) { - this.sqlSelect.setStringValue(s); - } else { - this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + s); + public final MPJLambdaQueryWrapper selectIgnore(SFunction... columns) { + if (ArrayUtils.isNotEmpty(columns)) { + for (SFunction s : columns) { + ignoreColumns.add(Constant.TABLE_ALIAS + StringPool.DOT + LambdaUtils.getColumn(s)); } } return typedThis; @@ -120,25 +141,16 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper select(String... columns) { - return select(true, columns); - } - - @SafeVarargs - public final MPJLambdaQueryWrapper select(boolean condition, String... columns) { - if (condition && ArrayUtils.isNotEmpty(columns)) { - String s = String.join(StringPool.COMMA, columns); - if (StringUtils.isBlank(sqlSelect.getStringValue())) { - this.sqlSelect.setStringValue(s); - } else { - this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + s); - } + public MPJLambdaQueryWrapper select(String... columns) { + if (ArrayUtils.isNotEmpty(columns)) { + Collections.addAll(selectColumns, columns); } return typedThis; } /** + * 只针对主表 + *

* 过滤查询的字段信息(主键除外!) *

例1: 只要 java 字段名以 "test" 开头的 -> select(i -> i.getProperty().startsWith("test"))

*

例2: 只要 java 字段属性是 CharSequence 类型的 -> select(TableFieldInfo::isCharSequence)

@@ -151,48 +163,37 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper select(Class entityClass, Predicate predicate) { - return select(true, entityClass, predicate); - } - - public MPJLambdaQueryWrapper select(boolean condition, Class entityClass, Predicate predicate) { - if (condition) { - if (entityClass == null) { - entityClass = getEntityClass(); - } else { - setEntityClass(entityClass); - } - Assert.notNull(entityClass, "entityClass can not be null"); - String s = TableInfoHelper.getTableInfo(entityClass).chooseSelect(predicate); - List list = Arrays.stream(s.split(StringPool.COMMA)).map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i).collect(Collectors.toList()); - String join = String.join(StringPool.COMMA, list); - if (StringUtils.isBlank(sqlSelect.getStringValue())) { - this.sqlSelect.setStringValue(join); - } else { - this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join); - } - } + TableInfo info = TableInfoHelper.getTableInfo(entityClass); + Assert.notNull(info, "can not find table info"); + selectColumns.addAll(info.getFieldList().stream().filter(predicate).map(c -> + Constant.TABLE_ALIAS + StringPool.DOT + c.getColumn()).collect(Collectors.toList())); return typedThis; } + + /** + * 查询主表全部字段 + * + * @param clazz 主表class + */ public final MPJLambdaQueryWrapper selectAll(Class clazz) { - return selectAll(true, clazz); + return selectAll(clazz, Constant.TABLE_ALIAS); } - public final MPJLambdaQueryWrapper selectAll(boolean condition, Class clazz) { - if (condition) { - TableInfo info = TableInfoHelper.getTableInfo(clazz); - List list = new ArrayList<>(); - if (info.havePK()) { - list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn()); - } - list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList())); - String join = String.join(StringPool.COMMA, list); - if (StringUtils.isBlank(sqlSelect.getStringValue())) { - this.sqlSelect.setStringValue(join); - } else { - this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join); - } + /** + * 查询表全部字段 + * + * @param clazz 表实体 + * @param as 表别名 + */ + public final MPJLambdaQueryWrapper selectAll(Class clazz, String as) { + TableInfo info = TableInfoHelper.getTableInfo(clazz); + Assert.notNull(info, "can not find table info"); + if (info.havePK()) { + selectColumns.add(as + StringPool.DOT + info.getKeyColumn()); } + selectColumns.addAll(info.getFieldList().stream().map(i -> + as + StringPool.DOT + i.getColumn()).collect(Collectors.toList())); return typedThis; } @@ -201,11 +202,17 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper stringQuery() { return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, - expression, sqlSelect, from, lastSql, sqlComment, sqlFirst); + expression, sqlSelect, from, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns); } @Override public String getSqlSelect() { + if (StringUtils.isBlank(sqlSelect.getStringValue())) { + if (CollectionUtils.isNotEmpty(ignoreColumns)) { + selectColumns.removeIf(ignoreColumns::contains); + } + sqlSelect.setStringValue(String.join(StringPool.COMMA, selectColumns)); + } return sqlSelect.getStringValue(); } @@ -220,12 +227,12 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper故 sqlSelect from不向下传递

+ *

故 sqlSelect selectColumn ignoreColumns from不向下传递

*/ @Override protected MPJLambdaQueryWrapper instance() { return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs, - new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); + new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), null, null); } @Override diff --git a/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java b/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java index dd3e70c..c17f183 100644 --- a/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java +++ b/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java @@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.github.yulichang.query.interfaces.MPJJoin; import com.github.yulichang.toolkit.Constant; +import org.springframework.util.Assert; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -25,7 +28,6 @@ import java.util.stream.Collectors; * * @author yulichang */ -@SuppressWarnings("serial") public class MPJQueryWrapper extends AbstractWrapper> implements Query, T, String>, MPJJoin> { @@ -44,22 +46,21 @@ public class MPJQueryWrapper extends AbstractWrapper selectColumns = new ArrayList<>(); + + /** + * 排除的字段 + */ + private List ignoreColumns = new ArrayList<>(); + public MPJQueryWrapper() { - this(null); - } - - public MPJQueryWrapper(T entity) { - super.setEntity(entity); super.initNeed(); } - public MPJQueryWrapper(T entity, String... columns) { - super.setEntity(entity); - super.initNeed(); - this.select(columns); - } - /** * 非对外公开的构造方法,只用于生产嵌套 sql * @@ -67,7 +68,9 @@ public class MPJQueryWrapper extends AbstractWrapper entityClass, AtomicInteger paramNameSeq, Map paramNameValuePairs, MergeSegments mergeSegments, - SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { + SharedString sqlSelect, SharedString from, SharedString lastSql, + SharedString sqlComment, SharedString sqlFirst, + List selectColumns, List ignoreColumns) { super.setEntity(entity); super.setEntityClass(entityClass); this.paramNameSeq = paramNameSeq; @@ -78,60 +81,83 @@ public class MPJQueryWrapper extends AbstractWrapper select(String... columns) { - return select(true, columns); - } - - public MPJQueryWrapper select(boolean condition, String... columns) { - if (condition) { - if (ArrayUtils.isNotEmpty(columns)) { - this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns)); - } + if (ArrayUtils.isNotEmpty(columns)) { + selectColumns.addAll(Arrays.asList(columns)); } return typedThis; } + /** + * 忽略查询字段 + *

+ * 用法: selectIgnore("t.id","t.sex","a.area") + * + * @since 1.1.3 + */ + public MPJQueryWrapper selectIgnore(String... columns) { + if (ArrayUtils.isNotEmpty(columns)) { + ignoreColumns.addAll(Arrays.asList(columns)); + } + return typedThis; + } + + /** + * 此方法只能用于主表 + * 不好含主键 + * + * @param entityClass 主表class + * @param predicate 条件lambda + */ @Override public MPJQueryWrapper select(Class entityClass, Predicate predicate) { - return select(true, entityClass, predicate); - } - - public MPJQueryWrapper select(boolean condition, Class entityClass, Predicate predicate) { - if (condition) { - super.setEntityClass(entityClass); - this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate)); - } + TableInfo info = TableInfoHelper.getTableInfo(entityClass); + Assert.notNull(info, "can not find table info"); + selectColumns.addAll(info.getFieldList().stream().filter(predicate).map(c -> + Constant.TABLE_ALIAS + StringPool.DOT + c.getColumn()).collect(Collectors.toList())); return typedThis; } + /** + * 查询主表全部字段 + * + * @param clazz 主表class + */ public final MPJQueryWrapper selectAll(Class clazz) { - return selectAll(true, clazz); + selectAll(clazz, Constant.TABLE_ALIAS); + return typedThis; } - public final MPJQueryWrapper selectAll(boolean condition, Class clazz) { - if (condition) { - TableInfo info = TableInfoHelper.getTableInfo(clazz); - List list = new ArrayList<>(); - if (info.havePK()) { - list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn()); - } - list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList())); - String join = String.join(StringPool.COMMA, list); - if (StringUtils.isBlank(sqlSelect.getStringValue())) { - this.sqlSelect.setStringValue(join); - } else { - this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join); - } + /** + * 查询指定实体全部字段 + * + * @param as 实体对应的别名 + */ + public final MPJQueryWrapper selectAll(Class clazz, String as) { + TableInfo info = TableInfoHelper.getTableInfo(clazz); + Assert.notNull(info, "can not find table info"); + if (info.havePK()) { + selectColumns.add(as + StringPool.DOT + info.getKeyColumn()); } + selectColumns.addAll(info.getFieldList().stream().map(i -> + as + StringPool.DOT + i.getColumn()).collect(Collectors.toList())); return typedThis; } @Override public String getSqlSelect() { + if (StringUtils.isBlank(sqlSelect.getStringValue())) { + if (CollectionUtils.isNotEmpty(ignoreColumns)) { + selectColumns.removeIf(ignoreColumns::contains); + } + sqlSelect.setStringValue(String.join(StringPool.COMMA, selectColumns)); + } return sqlSelect.getStringValue(); } @@ -149,19 +175,17 @@ public class MPJQueryWrapper extends AbstractWrapper lambda() { return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs, - expression, lastSql, sqlComment, sqlFirst); + expression, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns); } /** * 用于生成嵌套 sql - *

- * 故 sqlSelect from 不向下传递 - *

+ *

故 sqlSelect selectColumn ignoreColumns from不向下传递

*/ @Override protected MPJQueryWrapper instance() { return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(), - null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); + null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), null, null); } @Override diff --git a/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java b/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java index a086756..e0f71ed 100644 --- a/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java +++ b/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java @@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; -import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; -import com.baomidou.mybatisplus.core.toolkit.Assert; -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.LambdaUtils; @@ -18,6 +15,7 @@ import com.github.yulichang.wrapper.interfaces.SFunctionQuery; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -51,31 +49,20 @@ public class MPJJoinLambdaQueryWrapper extends MPJAbstractLambdaWrapper selectColumns = new ArrayList<>(); + /** + * 忽略查询的字段 + */ + private final List ignoreColumns = new ArrayList<>(); + /** * 表序号 */ private int tableIndex = 1; /** - * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) + * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery() */ public MPJJoinLambdaQueryWrapper() { - this((T) null); - } - - /** - * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) - */ - public MPJJoinLambdaQueryWrapper(T entity) { - super.setEntity(entity); - super.initNeed(); - } - - /** - * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) - */ - public MPJJoinLambdaQueryWrapper(Class entityClass) { - super.setEntityClass(entityClass); super.initNeed(); } @@ -103,12 +90,7 @@ public class MPJJoinLambdaQueryWrapper extends MPJAbstractLambdaWrapper MPJJoinLambdaQueryWrapper select(SFunction... columns) { - return select(true, columns); - } - - @SafeVarargs - public final MPJJoinLambdaQueryWrapper select(boolean condition, SFunction... columns) { - if (condition && ArrayUtils.isNotEmpty(columns)) { + if (ArrayUtils.isNotEmpty(columns)) { for (SFunction s : columns) { selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(s), LambdaUtils.getColumn(s), null)); } @@ -116,60 +98,54 @@ public class MPJJoinLambdaQueryWrapper extends MPJAbstractLambdaWrapper MPJJoinLambdaQueryWrapper select(Class entityClass, Predicate predicate) { - return select(true, entityClass, predicate); - } - - public MPJJoinLambdaQueryWrapper select(boolean condition, Class entityClass, Predicate predicate) { - if (condition) { - TableInfo info = TableInfoHelper.getTableInfo(entityClass); - Assert.notNull(info, "table can not be find"); - info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach( - i -> selectColumns.add(new SelectColumn(entityClass, i.getColumn(), null))); - } + TableInfo info = TableInfoHelper.getTableInfo(entityClass); + Assert.notNull(info, "table can not be find"); + info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach( + i -> selectColumns.add(new SelectColumn(entityClass, i.getColumn(), null))); return typedThis; } - public final MPJJoinLambdaQueryWrapper selectAs(SFunction columns, SFunction alias) { - return selectAs(true, columns, LambdaUtils.getName(alias)); + return selectAs(columns, LambdaUtils.getName(alias)); } /** * @since 1.1.3 */ - public final MPJJoinLambdaQueryWrapper selectAs(SFunction columns, String alias) { - return selectAs(true, columns, alias); - } - - public final MPJJoinLambdaQueryWrapper selectAs(boolean condition, SFunction columns, SFunction alias) { - return selectAs(condition, columns, LambdaUtils.getName(alias)); - } - - /** - * @since 1.1.3 - */ - public final MPJJoinLambdaQueryWrapper selectAs(boolean condition, SFunction columns, String alias) { - if (condition) { - selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(columns), LambdaUtils.getColumn(columns), alias)); - } + public final MPJJoinLambdaQueryWrapper selectAs(SFunction columns, String alias) { + selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(columns), LambdaUtils.getColumn(columns), alias)); return typedThis; } public final MPJJoinLambdaQueryWrapper selectAll(Class clazz) { - return selectAll(true, clazz); + TableInfo info = TableInfoHelper.getTableInfo(clazz); + Assert.notNull(info, "table can not be find -> %s", clazz); + if (info.havePK()) { + selectColumns.add(new SelectColumn(clazz, info.getKeyColumn(), null)); + } + info.getFieldList().forEach(c -> + selectColumns.add(new SelectColumn(clazz, c.getColumn(), null))); + return typedThis; } - public final MPJJoinLambdaQueryWrapper selectAll(boolean condition, Class clazz) { - if (condition) { - TableInfo info = TableInfoHelper.getTableInfo(clazz); - Assert.notNull(info, "table can not be find -> %s", clazz); - if (info.havePK()) { - selectColumns.add(new SelectColumn(clazz, info.getKeyColumn(), null)); + /** + * 忽略查询字段 + *

+ * 用法: selectIgnore(UserDO::getId,UserDO::getSex) + * 注意: 一个selectIgnore只支持一个对象 如果要忽略多个实体的字段,请调用多次 + *

+ * .selectIgnore(UserDO::getId,UserDO::getSex) + * .selectIgnore(UserAddressDO::getArea,UserAddressDO::getCity) + * + * @since 1.1.3 + */ + @SafeVarargs + public final MPJJoinLambdaQueryWrapper selectIgnore(SFunction... columns) { + if (ArrayUtils.isNotEmpty(columns)) { + for (SFunction s : columns) { + ignoreColumns.add(new SelectColumn(LambdaUtils.getEntityClass(s), LambdaUtils.getColumn(s), null)); } - info.getFieldList().forEach(c -> - selectColumns.add(new SelectColumn(clazz, c.getColumn(), null))); } return typedThis; } @@ -177,6 +153,10 @@ public class MPJJoinLambdaQueryWrapper extends MPJAbstractLambdaWrapper ignoreColumns.stream().anyMatch(i -> + i.getClazz() == c.getClazz() && Objects.equals(c.getColumnName(), i.getColumnName()))); + } String s = selectColumns.stream().map(i -> Constant.TABLE_ALIAS + getDefault(subTable.get(i.getClazz())) + StringPool.DOT + i.getColumnName() + (StringUtils.isBlank(i.getAlias()) ? StringPool.EMPTY : (Constant.AS + i.getAlias())))