diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MPJInterceptorConfig.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MPJInterceptorConfig.java index b2853dc..22a510a 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MPJInterceptorConfig.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/MPJInterceptorConfig.java @@ -30,7 +30,7 @@ public class MPJInterceptorConfig { System.out.println(" _ _ |_ _ _|_. ___ _ | _ . _ . _ \n" + "| | |\\/|_)(_| | |_\\ |_)||_|_\\ | (_) | | | \n" + " / | /\n" + - " 1.4.7.2"); + " 1.4.8"); } } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtLambdaWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtLambdaWrapper.java index 26e8a25..51f4eb6 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtLambdaWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtLambdaWrapper.java @@ -253,7 +253,7 @@ public class KtLambdaWrapper extends KtAbstractLambdaWrapper union.selectAll(UserDO.class)) * * @param clazz union语句的主表类型 - * @since 1.4.7.3 + * @since 1.4.8 */ public KtLambdaWrapper union(Class clazz, Consumer> consumer) { KtLambdaWrapper unionWrapper = KtWrappers.query(clazz); @@ -301,7 +301,7 @@ public class KtLambdaWrapper extends KtAbstractLambdaWrapper union.selectAll(UserDO.class)) * * @param clazz union语句的主表类型 - * @since 1.4.7.3 + * @since 1.4.8 */ public KtLambdaWrapper unionAll(Class clazz, Consumer> consumer) { KtLambdaWrapper unionWrapper = KtWrappers.query(clazz); diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/FieldStringMap.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/FieldStringMap.java index 51d6f5a..2d1196a 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/FieldStringMap.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/FieldStringMap.java @@ -6,7 +6,7 @@ import java.util.Locale; /** * @author yulichang * @see HashMap - * @since 1.4.7.3 + * @since 1.4.8 */ public class FieldStringMap extends HashMap { diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJAbstractLambdaWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJAbstractLambdaWrapper.java index 47b7bf8..c0fc4fc 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJAbstractLambdaWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJAbstractLambdaWrapper.java @@ -219,19 +219,19 @@ public abstract class MPJAbstractLambdaWrapper String columnToString(Integer index, X column, boolean isJoin, PrefixEnum prefixEnum) { - return columnToString(index, (SFunction) column, isJoin, prefixEnum); + protected String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum) { + return columnToString(index, alias, (SFunction) column, isJoin, prefixEnum); } @Override @SafeVarargs - protected final String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, X... columns) { - return Arrays.stream(columns).map(i -> columnToString(index, (SFunction) i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA)); + protected final String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns) { + return Arrays.stream(columns).map(i -> columnToString(index, alias, (SFunction) i, false, prefixEnum)).collect(joining(StringPool.COMMA)); } - protected String columnToString(Integer index, SFunction column, boolean isJoin, PrefixEnum prefixEnum) { + protected String columnToString(Integer index, String alias, SFunction column, boolean isJoin, PrefixEnum prefixEnum) { Class entityClass = LambdaUtils.getEntityClass(column); - return getDefault(index, entityClass, isJoin, prefixEnum) + StringPool.DOT + getCache(column).getColumn(); + return (alias == null ? getDefault(index, entityClass, isJoin, prefixEnum) : alias) + StringPool.DOT + getCache(column).getColumn(); } protected SelectCache getCache(SFunction fn) { @@ -378,7 +378,7 @@ public abstract class MPJAbstractLambdaWrapper> extends Wrapper implements Compare, Nested, Join, Func, OnCompare, CompareStr, FuncStr { @@ -56,6 +56,7 @@ public abstract class MPJAbstractWrapper paramNameValuePairs; /** * 其他 @@ -102,7 +103,7 @@ public abstract class MPJAbstractWrapper Children eq(boolean condition, SFunction column, Object val) { - return addCondition(condition, column, EQ, val); + public Children eq(boolean condition, String alias, SFunction column, Object val) { + return addCondition(condition, alias, column, EQ, val); } @Override - public Children ne(boolean condition, SFunction column, Object val) { - return addCondition(condition, column, NE, val); + public Children ne(boolean condition, String alias, SFunction column, Object val) { + return addCondition(condition, alias, column, NE, val); } @Override - public Children gt(boolean condition, SFunction column, Object val) { - return addCondition(condition, column, GT, val); + public Children gt(boolean condition, String alias, SFunction column, Object val) { + return addCondition(condition, alias, column, GT, val); } @Override - public Children ge(boolean condition, SFunction column, Object val) { - return addCondition(condition, column, GE, val); + public Children ge(boolean condition, String alias, SFunction column, Object val) { + return addCondition(condition, alias, column, GE, val); } @Override - public Children lt(boolean condition, SFunction column, Object val) { - return addCondition(condition, column, LT, val); + public Children lt(boolean condition, String alias, SFunction column, Object val) { + return addCondition(condition, alias, column, LT, val); } @Override - public Children le(boolean condition, SFunction column, Object val) { - return addCondition(condition, column, LE, val); + public Children le(boolean condition, String alias, SFunction column, Object val) { + return addCondition(condition, alias, column, LE, val); } @Override - public Children like(boolean condition, SFunction column, Object val) { - return likeValue(condition, LIKE, column, val, SqlLike.DEFAULT); + public Children like(boolean condition, String alias, SFunction column, Object val) { + return likeValue(condition, LIKE, alias, column, val, SqlLike.DEFAULT); } @Override - public Children notLike(boolean condition, SFunction column, Object val) { - return likeValue(condition, NOT_LIKE, column, val, SqlLike.DEFAULT); + public Children notLike(boolean condition, String alias, SFunction column, Object val) { + return likeValue(condition, NOT_LIKE, alias, column, val, SqlLike.DEFAULT); } @Override - public Children likeLeft(boolean condition, SFunction column, Object val) { - return likeValue(condition, LIKE, column, val, SqlLike.LEFT); + public Children likeLeft(boolean condition, String alias, SFunction column, Object val) { + return likeValue(condition, LIKE, alias, column, val, SqlLike.LEFT); } @Override - public Children likeRight(boolean condition, SFunction column, Object val) { - return likeValue(condition, LIKE, column, val, SqlLike.RIGHT); + public Children likeRight(boolean condition, String alias, SFunction column, Object val) { + return likeValue(condition, LIKE, alias, column, val, SqlLike.RIGHT); } @Override - public Children between(boolean condition, SFunction column, Object val1, Object val2) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), BETWEEN, + public Children between(boolean condition, String alias, SFunction column, Object val1, Object val2) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), BETWEEN, () -> formatParam(null, val1), AND, () -> formatParam(null, val2))); } @Override - public Children notBetween(boolean condition, SFunction column, Object val1, Object val2) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_BETWEEN, + public Children notBetween(boolean condition, String alias, SFunction column, Object val1, Object val2) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_BETWEEN, () -> formatParam(null, val1), AND, () -> formatParam(null, val2))); } @@ -329,89 +330,89 @@ public abstract class MPJAbstractWrapper Children isNull(boolean condition, SFunction column) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IS_NULL)); + public Children isNull(boolean condition, String alias, SFunction column) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NULL)); } @Override - public Children isNotNull(boolean condition, SFunction column) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IS_NOT_NULL)); + public Children isNotNull(boolean condition, String alias, SFunction column) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NOT_NULL)); } @Override - public Children in(boolean condition, SFunction column, Collection coll) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, inExpression(coll))); + public Children in(boolean condition, String alias, SFunction column, Collection coll) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(coll))); } @Override - public Children in(boolean condition, SFunction column, Object... values) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, inExpression(values))); + public Children in(boolean condition, String alias, SFunction column, Object... values) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(values))); } @Override - public Children notIn(boolean condition, SFunction column, Collection coll) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, inExpression(coll))); + public Children notIn(boolean condition, String alias, SFunction column, Collection coll) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(coll))); } @Override - public Children notIn(boolean condition, SFunction column, Object... values) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, inExpression(values))); + public Children notIn(boolean condition, String alias, SFunction column, Object... values) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(values))); } @Override - public Children inSql(boolean condition, SFunction column, String inValue) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, + public Children inSql(boolean condition, String alias, SFunction column, String inValue) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, () -> String.format("(%s)", inValue))); } @Override - public Children notInSql(boolean condition, SFunction column, String inValue) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, + public Children notInSql(boolean condition, String alias, SFunction column, String inValue) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, () -> String.format("(%s)", inValue))); } @Override - public Children gtSql(boolean condition, SFunction column, String inValue) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), GT, + public Children gtSql(boolean condition, String alias, SFunction column, String inValue) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GT, () -> String.format("(%s)", inValue))); } @Override - public Children geSql(boolean condition, SFunction column, String inValue) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), GE, + public Children geSql(boolean condition, String alias, SFunction column, String inValue) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GE, () -> String.format("(%s)", inValue))); } @Override - public Children ltSql(boolean condition, SFunction column, String inValue) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), LT, + public Children ltSql(boolean condition, String alias, SFunction column, String inValue) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LT, () -> String.format("(%s)", inValue))); } @Override - public Children leSql(boolean condition, SFunction column, String inValue) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), LE, + public Children leSql(boolean condition, String alias, SFunction column, String inValue) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LE, () -> String.format("(%s)", inValue))); } @Override - public Children groupBy(boolean condition, List> columns) { + public Children groupBy(boolean condition, String alias, List> columns) { return maybeDo(condition, () -> { if (CollectionUtils.isNotEmpty(columns)) { - String one = (StringPool.COMMA + columnsToString(index, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns)); - final String finalOne = one; + final String finalOne = (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns)); appendSqlSegments(GROUP_BY, () -> finalOne); } }); } + @SafeVarargs @Override - public Children groupBy(boolean condition, SFunction column, SFunction... columns) { + public final Children groupBy(boolean condition, String alias, SFunction column, SFunction... columns) { return maybeDo(condition, () -> { - String one = columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); + String one = columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); if (ArrayUtils.isNotEmpty(columns)) { - one += (StringPool.COMMA + columnsToString(index, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns)); + one += (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns)); } final String finalOne = one; appendSqlSegments(GROUP_BY, () -> finalOne); @@ -419,35 +420,33 @@ public abstract class MPJAbstractWrapper Children orderByAsc(boolean condition, List> columns) { + public Children orderByAsc(boolean condition, String alias, List> columns) { return maybeDo(condition, () -> { - final SqlKeyword mode = ASC; if (CollectionUtils.isNotEmpty(columns)) { columns.forEach(c -> appendSqlSegments(ORDER_BY, - columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode)); + columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), ASC)); } }); } @Override - public Children orderByDesc(boolean condition, List> columns) { + public Children orderByDesc(boolean condition, String alias, List> columns) { return maybeDo(condition, () -> { - final SqlKeyword mode = DESC; if (CollectionUtils.isNotEmpty(columns)) { columns.forEach(c -> appendSqlSegments(ORDER_BY, - columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode)); + columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), DESC)); } }); } @Override - public Children orderBy(boolean condition, boolean isAsc, SFunction column, SFunction... columns) { + public Children orderBy(boolean condition, boolean isAsc, String alias, SFunction column, SFunction... columns) { return maybeDo(condition, () -> { final SqlKeyword mode = isAsc ? ASC : DESC; - appendSqlSegments(ORDER_BY, columnToSqlSegment(index, column, false), mode); + appendSqlSegments(ORDER_BY, columnToSqlSegment(index, alias, column), mode); if (ArrayUtils.isNotEmpty(columns)) { Arrays.stream(columns).forEach(c -> appendSqlSegments(ORDER_BY, - columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode)); + columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), mode)); } }); } @@ -456,7 +455,6 @@ public abstract class MPJAbstractWrapper SFunction columnSqlInjectFilter(SFunction column) { return column; @@ -493,8 +491,8 @@ public abstract class MPJAbstractWrapper拼接 LIKE 以及 值

*/ - protected Children likeValue(boolean condition, SqlKeyword keyword, SFunction column, Object val, SqlLike sqlLike) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), keyword, + protected Children likeValue(boolean condition, SqlKeyword keyword, String alias, SFunction column, Object val, SqlLike sqlLike) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), keyword, () -> formatParam(null, SqlUtils.concatLike(val, sqlLike)))); } @@ -511,18 +509,18 @@ public abstract class MPJAbstractWrapper Children addCondition(boolean condition, SFunction column, SqlKeyword sqlKeyword, Object val) { - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword, + protected Children addCondition(boolean condition, String alias, SFunction column, SqlKeyword sqlKeyword, Object val) { + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword, () -> formatParam(null, val))); } - protected Children addCondition(boolean condition, SFunction column, SqlKeyword sqlKeyword, SFunction val) { + protected Children addCondition(boolean condition, String alias, SFunction column, + SqlKeyword sqlKeyword, String rightAlias, SFunction val) { Class c = LambdaUtils.getEntityClass(column); Class v = LambdaUtils.getEntityClass(val); - return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword, - isNo ? - columnToSqlSegmentS(index, val, v == c && v == joinClass) : - columnToSqlSegmentS(index, val, v == c) + return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword, + isOn ? columnToSqlSegmentS(index, rightAlias, val, v == c && v == joinClass) : + columnToSqlSegmentS(index, rightAlias, val, v == c) )); } @@ -563,6 +561,7 @@ public abstract class MPJAbstractWrapper getParamNameValuePairs() { - return paramNameValuePairs; - } - public String getParamAlias() { return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue(); } @@ -698,6 +693,7 @@ public abstract class MPJAbstractWrapper ISqlSegment columnToSqlSegment(Integer index, SFunction column, boolean isJoin) { - return () -> columnToString(index, column, isJoin, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); + protected final ISqlSegment columnToSqlSegment(Integer index, String alias, SFunction column) { + return () -> columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); } - protected final ISqlSegment columnToSqlSegmentS(Integer index, SFunction column, boolean isJoin) { + protected final ISqlSegment columnToSqlSegmentS(Integer index, String alias, SFunction column, boolean isJoin) { PrefixEnum prefixEnum; if (isMain) { - prefixEnum = isNo ? PrefixEnum.ON_SECOND /* 理论上不可能有这种情况 */ : PrefixEnum.CD_SECOND; + prefixEnum = isOn ? PrefixEnum.ON_SECOND /* 理论上不可能有这种情况 */ : PrefixEnum.CD_SECOND; } else { - prefixEnum = isNo ? PrefixEnum.ON_SECOND : PrefixEnum.CD_ON_SECOND; + prefixEnum = isOn ? PrefixEnum.ON_SECOND : PrefixEnum.CD_ON_SECOND; } - return () -> columnToString(index, column, isJoin, prefixEnum); + return () -> columnToString(index, alias, column, isJoin, prefixEnum); } - protected final ISqlSegment columnToSqlSegment(String column) { + protected final ISqlSegment columnToSqlSegment(String column) { return () -> columnsToString(column); } /** * 获取 columnName */ - protected String columnToString(Integer index, X column, boolean isJoin, PrefixEnum prefixEnum) { + protected String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum) { return (String) column; } @@ -753,12 +749,10 @@ public abstract class MPJAbstractWrapper String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, X... columns) { - return Arrays.stream(columns).map(i -> this.columnToString(index, i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA)); - } + abstract String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns); @Override - @SuppressWarnings("all") + @SuppressWarnings("MethodDoesntCallSuperMethod") public Children clone() { return SerializationUtils.clone(typedThis); } @@ -775,33 +769,33 @@ public abstract class MPJAbstractWrapper Children eq(boolean condition, SFunction column, SFunction val) { - return addCondition(condition, column, EQ, val); + public Children eq(boolean condition, String alias, SFunction column, String rightAlias, SFunction val) { + return addCondition(condition, alias, column, EQ, rightAlias, val); } @Override - public Children ne(boolean condition, SFunction column, SFunction val) { - return addCondition(condition, column, NE, val); + public Children ne(boolean condition, String alias, SFunction column, String rightAlias, SFunction val) { + return addCondition(condition, alias, column, NE, rightAlias, val); } @Override - public Children gt(boolean condition, SFunction column, SFunction val) { - return addCondition(condition, column, GT, val); + public Children gt(boolean condition, String alias, SFunction column, String rightAlias, SFunction val) { + return addCondition(condition, alias, column, GT, rightAlias, val); } @Override - public Children ge(boolean condition, SFunction column, SFunction val) { - return addCondition(condition, column, GE, val); + public Children ge(boolean condition, String alias, SFunction column, String rightAlias, SFunction val) { + return addCondition(condition, alias, column, GE, rightAlias, val); } @Override - public Children lt(boolean condition, SFunction column, SFunction val) { - return addCondition(condition, column, LT, val); + public Children lt(boolean condition, String alias, SFunction column, String rightAlias, SFunction val) { + return addCondition(condition, alias, column, LT, rightAlias, val); } @Override - public Children le(boolean condition, SFunction column, SFunction val) { - return addCondition(condition, column, LE, val); + public Children le(boolean condition, String alias, SFunction column, String rightAlias, SFunction val) { + return addCondition(condition, alias, column, LE, rightAlias, val); } /* ****************************************** **/ diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJLambdaWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJLambdaWrapper.java index 3898ee5..534882c 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJLambdaWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/MPJLambdaWrapper.java @@ -252,7 +252,7 @@ public class MPJLambdaWrapper extends MPJAbstractLambdaWrapper union.selectAll(UserDO.class)) * * @param clazz union语句的主表类型 - * @since 1.4.7.3 + * @since 1.4.8 */ public MPJLambdaWrapper union(Class clazz, Consumer> consumer) { MPJLambdaWrapper unionWrapper = JoinWrappers.lambda(clazz); @@ -300,7 +300,7 @@ public class MPJLambdaWrapper extends MPJAbstractLambdaWrapper union.selectAll(UserDO.class)) * * @param clazz union语句的主表类型 - * @since 1.4.7.3 + * @since 1.4.8 */ public MPJLambdaWrapper unionAll(Class clazz, Consumer> consumer) { MPJLambdaWrapper unionWrapper = JoinWrappers.lambda(clazz); diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Compare.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Compare.java index 1d3b191..7b76b5a 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Compare.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Compare.java @@ -14,16 +14,12 @@ import java.util.function.BiPredicate; @SuppressWarnings("unused") public interface Compare extends Serializable { - /** - * ignore - */ + default Children allEq(Map, V> params) { return allEq(params, true); } - /** - * ignore - */ + default Children allEq(Map, V> params, boolean null2IsNull) { return allEq(true, params, null2IsNull); } @@ -38,16 +34,12 @@ public interface Compare extends Serializable { */ Children allEq(boolean condition, Map, V> params, boolean null2IsNull); - /** - * ignore - */ + default Children allEq(BiPredicate, V> filter, Map, V> params) { return allEq(filter, params, true); } - /** - * ignore - */ + default Children allEq(BiPredicate, V> filter, Map, V> params, boolean null2IsNull) { return allEq(true, filter, params, null2IsNull); } @@ -63,12 +55,16 @@ public interface Compare extends Serializable { */ Children allEq(boolean condition, BiPredicate, V> filter, Map, V> params, boolean null2IsNull); - /** - * ignore - */ - @SuppressWarnings("UnusedReturnValue") default Children eq(SFunction column, Object val) { - return eq(true, column, val); + return eq(true, null, column, val); + } + + default Children eq(String alias, SFunction column, Object val) { + return eq(true, alias, column, val); + } + + default Children eq(boolean condition, SFunction column, Object val) { + return eq(condition, null, column, val); } /** @@ -79,30 +75,42 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children eq(boolean condition, SFunction column, Object val); + Children eq(boolean condition, String alias, SFunction column, Object val); - /** - * ignore - */ default Children ne(SFunction column, Object val) { - return ne(true, column, val); + return ne(true, null, column, val); + } + + default Children ne(String alias, SFunction column, Object val) { + return ne(true, alias, column, val); + } + + default Children ne(boolean condition, SFunction column, Object val) { + return ne(condition, null, column, val); } /** * 不等于 <> * * @param condition 执行条件 + * @param alias 字段别名 * @param column 字段 * @param val 值 * @return children */ - Children ne(boolean condition, SFunction column, Object val); + Children ne(boolean condition, String alias, SFunction column, Object val); + - /** - * ignore - */ default Children gt(SFunction column, Object val) { - return gt(true, column, val); + return gt(true, null, column, val); + } + + default Children gt(String alias, SFunction column, Object val) { + return gt(true, alias, column, val); + } + + default Children gt(boolean condition, SFunction column, Object val) { + return gt(condition, null, column, val); } /** @@ -113,13 +121,18 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children gt(boolean condition, SFunction column, Object val); + Children gt(boolean condition, String alias, SFunction column, Object val); - /** - * ignore - */ default Children ge(SFunction column, Object val) { - return ge(true, column, val); + return ge(true, null, column, val); + } + + default Children ge(String alias, SFunction column, Object val) { + return ge(true, alias, column, val); + } + + default Children ge(boolean condition, SFunction column, Object val) { + return ge(condition, null, column, val); } /** @@ -130,13 +143,19 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children ge(boolean condition, SFunction column, Object val); + Children ge(boolean condition, String alias, SFunction column, Object val); + - /** - * ignore - */ default Children lt(SFunction column, Object val) { - return lt(true, column, val); + return lt(true, null, column, val); + } + + default Children lt(String alias, SFunction column, Object val) { + return lt(true, alias, column, val); + } + + default Children lt(boolean condition, SFunction column, Object val) { + return lt(condition, null, column, val); } /** @@ -147,13 +166,19 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children lt(boolean condition, SFunction column, Object val); + Children lt(boolean condition, String alias, SFunction column, Object val); + - /** - * ignore - */ default Children le(SFunction column, Object val) { - return le(true, column, val); + return le(true, null, column, val); + } + + default Children le(String alias, SFunction column, Object val) { + return le(true, alias, column, val); + } + + default Children le(boolean condition, SFunction column, Object val) { + return le(condition, null, column, val); } /** @@ -164,13 +189,19 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children le(boolean condition, SFunction column, Object val); + Children le(boolean condition, String alias, SFunction column, Object val); + - /** - * ignore - */ default Children between(SFunction column, Object val1, Object val2) { - return between(true, column, val1, val2); + return between(true, null, column, val1, val2); + } + + default Children between(String alias, SFunction column, Object val1, Object val2) { + return between(true, alias, column, val1, val2); + } + + default Children between(boolean condition, SFunction column, Object val1, Object val2) { + return between(condition, null, column, val1, val2); } /** @@ -182,13 +213,19 @@ public interface Compare extends Serializable { * @param val2 值2 * @return children */ - Children between(boolean condition, SFunction column, Object val1, Object val2); + Children between(boolean condition, String alias, SFunction column, Object val1, Object val2); + - /** - * ignore - */ default Children notBetween(SFunction column, Object val1, Object val2) { - return notBetween(true, column, val1, val2); + return notBetween(true, null, column, val1, val2); + } + + default Children notBetween(String alias, SFunction column, Object val1, Object val2) { + return notBetween(true, alias, column, val1, val2); + } + + default Children notBetween(boolean condition, SFunction column, Object val1, Object val2) { + return notBetween(condition, null, column, val1, val2); } /** @@ -200,13 +237,18 @@ public interface Compare extends Serializable { * @param val2 值2 * @return children */ - Children notBetween(boolean condition, SFunction column, Object val1, Object val2); + Children notBetween(boolean condition, String alias, SFunction column, Object val1, Object val2); - /** - * ignore - */ default Children like(SFunction column, Object val) { - return like(true, column, val); + return like(true, null, column, val); + } + + default Children like(String alias, SFunction column, Object val) { + return like(true, alias, column, val); + } + + default Children like(boolean condition, SFunction column, Object val) { + return like(condition, null, column, val); } /** @@ -217,13 +259,18 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children like(boolean condition, SFunction column, Object val); + Children like(boolean condition, String alias, SFunction column, Object val); - /** - * ignore - */ default Children notLike(SFunction column, Object val) { - return notLike(true, column, val); + return notLike(true, null, column, val); + } + + default Children notLike(String alias, SFunction column, Object val) { + return notLike(true, alias, column, val); + } + + default Children notLike(boolean condition, SFunction column, Object val) { + return notLike(condition, null, column, val); } /** @@ -234,13 +281,18 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children notLike(boolean condition, SFunction column, Object val); + Children notLike(boolean condition, String alias, SFunction column, Object val); - /** - * ignore - */ default Children likeLeft(SFunction column, Object val) { - return likeLeft(true, column, val); + return likeLeft(true, null, column, val); + } + + default Children likeLeft(String alias, SFunction column, Object val) { + return likeLeft(true, alias, column, val); + } + + default Children likeLeft(boolean condition, SFunction column, Object val) { + return likeLeft(condition, null, column, val); } /** @@ -251,13 +303,18 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children likeLeft(boolean condition, SFunction column, Object val); + Children likeLeft(boolean condition, String alias, SFunction column, Object val); - /** - * ignore - */ default Children likeRight(SFunction column, Object val) { - return likeRight(true, column, val); + return likeRight(true, null, column, val); + } + + default Children likeRight(String alias, SFunction column, Object val) { + return likeRight(true, alias, column, val); + } + + default Children likeRight(boolean condition, SFunction column, Object val) { + return likeRight(condition, null, column, val); } /** @@ -268,5 +325,5 @@ public interface Compare extends Serializable { * @param val 值 * @return children */ - Children likeRight(boolean condition, SFunction column, Object val); + Children likeRight(boolean condition, String alias, SFunction column, Object val); } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Func.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Func.java index a167f2b..0e7b114 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Func.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Func.java @@ -12,15 +12,20 @@ import java.util.function.Consumer; *

* copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func} */ -@SuppressWarnings({"unchecked", "unused", "JavadocDeclaration"}) +@SuppressWarnings({"unchecked", "unused"}) public interface Func extends Serializable { - /** - * ignore - */ - @SuppressWarnings("UnusedReturnValue") + default Children isNull(SFunction column) { - return isNull(true, column); + return isNull(true, null, column); + } + + default Children isNull(String alias, SFunction column) { + return isNull(true, alias, column); + } + + default Children isNull(boolean condition, SFunction column) { + return isNull(condition, null, column); } /** @@ -31,13 +36,19 @@ public interface Func extends Serializable { * @param column 字段 * @return children */ - Children isNull(boolean condition, SFunction column); + Children isNull(boolean condition, String alias, SFunction column); + - /** - * ignore - */ default Children isNotNull(SFunction column) { - return isNotNull(true, column); + return isNotNull(true, null, column); + } + + default Children isNotNull(String alias, SFunction column) { + return isNotNull(true, alias, column); + } + + default Children isNotNull(boolean condition, SFunction column) { + return isNotNull(condition, null, column); } /** @@ -48,13 +59,19 @@ public interface Func extends Serializable { * @param column 字段 * @return children */ - Children isNotNull(boolean condition, SFunction column); + Children isNotNull(boolean condition, String alias, SFunction column); + - /** - * ignore - */ default Children in(SFunction column, Collection coll) { - return in(true, column, coll); + return in(true, null, column, coll); + } + + default Children in(String alias, SFunction column, Collection coll) { + return in(true, alias, column, coll); + } + + default Children in(boolean condition, SFunction column, Collection coll) { + return in(condition, null, column, coll); } /** @@ -69,13 +86,19 @@ public interface Func extends Serializable { * @param coll 数据集合 * @return children */ - Children in(boolean condition, SFunction column, Collection coll); + Children in(boolean condition, String alias, SFunction column, Collection coll); + - /** - * ignore - */ default Children in(SFunction column, Object... values) { - return in(true, column, values); + return in(true, null, column, values); + } + + default Children in(String alias, SFunction column, Object... values) { + return in(true, alias, column, values); + } + + default Children in(boolean condition, SFunction column, Object... values) { + return in(condition, null, column, values); } /** @@ -90,13 +113,19 @@ public interface Func extends Serializable { * @param values 数据数组 * @return children */ - Children in(boolean condition, SFunction column, Object... values); + Children in(boolean condition, String alias, SFunction column, Object... values); + - /** - * ignore - */ default Children notIn(SFunction column, Collection coll) { - return notIn(true, column, coll); + return notIn(true, null, column, coll); + } + + default Children notIn(String alias, SFunction column, Collection coll) { + return notIn(true, alias, column, coll); + } + + default Children notIn(boolean condition, SFunction column, Collection coll) { + return notIn(condition, null, column, coll); } /** @@ -108,13 +137,19 @@ public interface Func extends Serializable { * @param coll 数据集合 * @return children */ - Children notIn(boolean condition, SFunction column, Collection coll); + Children notIn(boolean condition, String alias, SFunction column, Collection coll); - /** - * ignore - */ - default Children notIn(SFunction column, Object... value) { - return notIn(true, column, value); + + default Children notIn(SFunction column, Object... values) { + return notIn(true, null, column, values); + } + + default Children notIn(String alias, SFunction column, Object... values) { + return notIn(true, alias, column, values); + } + + default Children notIn(boolean condition, SFunction column, Object... values) { + return notIn(condition, null, column, values); } /** @@ -126,13 +161,19 @@ public interface Func extends Serializable { * @param values 数据数组 * @return children */ - Children notIn(boolean condition, SFunction column, Object... values); + Children notIn(boolean condition, String alias, SFunction column, Object... values); + - /** - * ignore - */ default Children inSql(SFunction column, String inValue) { - return inSql(true, column, inValue); + return inSql(true, null, column, inValue); + } + + default Children inSql(String alias, SFunction column, String inValue) { + return inSql(true, alias, column, inValue); + } + + default Children inSql(boolean condition, SFunction column, String inValue) { + return inSql(condition, null, column, inValue); } /** @@ -146,13 +187,19 @@ public interface Func extends Serializable { * @param inValue sql语句 * @return children */ - Children inSql(boolean condition, SFunction column, String inValue); + Children inSql(boolean condition, String alias, SFunction column, String inValue); + - /** - * ignore - */ default Children notInSql(SFunction column, String inValue) { - return notInSql(true, column, inValue); + return notInSql(true, null, column, inValue); + } + + default Children notInSql(String alias, SFunction column, String inValue) { + return notInSql(true, alias, column, inValue); + } + + default Children notInSql(boolean condition, SFunction column, String inValue) { + return notInSql(condition, null, column, inValue); } /** @@ -166,26 +213,42 @@ public interface Func extends Serializable { * @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3 * @return children */ - Children notInSql(boolean condition, SFunction column, String inValue); + Children notInSql(boolean condition, String alias, SFunction column, String inValue); + default Children gtSql(SFunction column, String inValue) { + return gtSql(true, null, column, inValue); + } + + default Children gtSql(String alias, SFunction column, String inValue) { + return gtSql(true, alias, column, inValue); + } + + default Children gtSql(boolean condition, SFunction column, String inValue) { + return gtSql(condition, null, column, inValue); + } /** * 字段 > ( sql语句 ) *

例1: gtSql("id", "1, 2, 3, 4, 5, 6")

*

例1: gtSql("id", "select id from table where name = 'JunJun'")

* - * @param condition - * @param column - * @param inValue - * @return + * @param condition 执行条件 + * @param column 字段 + * @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3 + * @return children */ - Children gtSql(boolean condition, SFunction column, String inValue); + Children gtSql(boolean condition, String alias, SFunction column, String inValue); - /** - * ignore - */ - default Children gtSql(SFunction column, String inValue) { - return gtSql(true, column, inValue); + default Children geSql(SFunction column, String inValue) { + return geSql(true, null, column, inValue); + } + + default Children geSql(String alias, SFunction column, String inValue) { + return geSql(true, alias, column, inValue); + } + + default Children geSql(boolean condition, SFunction column, String inValue) { + return geSql(condition, null, column, inValue); } /** @@ -193,18 +256,23 @@ public interface Func extends Serializable { *

例1: geSql("id", "1, 2, 3, 4, 5, 6")

*

例1: geSql("id", "select id from table where name = 'JunJun'")

* - * @param condition - * @param column - * @param inValue - * @return + * @param condition 执行条件 + * @param column 字段 + * @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3 + * @return children */ - Children geSql(boolean condition, SFunction column, String inValue); + Children geSql(boolean condition, String alias, SFunction column, String inValue); - /** - * ignore - */ - default Children geSql(SFunction column, String inValue) { - return geSql(true, column, inValue); + default Children ltSql(SFunction column, String inValue) { + return ltSql(true, null, column, inValue); + } + + default Children ltSql(String alias, SFunction column, String inValue) { + return ltSql(true, alias, column, inValue); + } + + default Children ltSql(boolean condition, SFunction column, String inValue) { + return ltSql(condition, null, column, inValue); } /** @@ -212,18 +280,23 @@ public interface Func extends Serializable { *

例1: ltSql("id", "1, 2, 3, 4, 5, 6")

*

例1: ltSql("id", "select id from table where name = 'JunJun'")

* - * @param condition - * @param column - * @param inValue - * @return + * @param condition 执行条件 + * @param column 字段 + * @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3 + * @return children */ - Children ltSql(boolean condition, SFunction column, String inValue); + Children ltSql(boolean condition, String alias, SFunction column, String inValue); - /** - * ignore - */ - default Children ltSql(SFunction column, String inValue) { - return ltSql(true, column, inValue); + default Children leSql(SFunction column, String inValue) { + return leSql(true, null, column, inValue); + } + + default Children leSql(String alias, SFunction column, String inValue) { + return leSql(true, alias, column, inValue); + } + + default Children leSql(boolean condition, SFunction column, String inValue) { + return leSql(condition, null, column, inValue); } /** @@ -231,44 +304,47 @@ public interface Func extends Serializable { *

例1: leSql("id", "1, 2, 3, 4, 5, 6")

*

例1: leSql("id", "select id from table where name = 'JunJun'")

* - * @param condition - * @param column - * @param inValue - * @return + * @param condition 执行条件 + * @param column 字段 + * @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3 + * @return children */ - Children leSql(boolean condition, SFunction column, String inValue); + Children leSql(boolean condition, String alias, SFunction column, String inValue); - /** - * ignore - */ - default Children leSql(SFunction column, String inValue) { - return leSql(true, column, inValue); - } - - /** - * ignore - */ default Children groupBy(SFunction column) { - return groupBy(true, column); + return groupBy(true, (String) null, column); + } + + default Children groupBy(String alias, SFunction column) { + return groupBy(true, alias, column); } - /** - * ignore - */ default Children groupBy(List> column) { - return groupBy(true, column); + return groupBy(true, null, column); } - /** - * ignore - */ - Children groupBy(boolean condition, List> columns); + default Children groupBy(String alias, List> column) { + return groupBy(true, alias, column); + } + + default Children groupBy(boolean condition, List> columns) { + return groupBy(condition, null, columns); + } + + + Children groupBy(boolean condition, String alias, List> columns); + - /** - * ignore - */ default Children groupBy(SFunction column, SFunction... columns) { - return groupBy(true, column, columns); + return groupBy(true, null, column, columns); + } + + default Children groupBy(String alias, SFunction column, SFunction... columns) { + return groupBy(true, alias, column, columns); + } + + default Children groupBy(boolean condition, SFunction column, SFunction... columns) { + return groupBy(condition, null, column, columns); } /** @@ -280,32 +356,42 @@ public interface Func extends Serializable { * @param columns 字段数组 * @return children */ - Children groupBy(boolean condition, SFunction column, SFunction... columns); + Children groupBy(boolean condition, String alias, SFunction column, SFunction... columns); + - /** - * ignore - */ default Children orderByAsc(SFunction column) { - return orderByAsc(true, column); + return orderByAsc(true, (String) null, column); + } + + default Children orderByAsc(String alias, SFunction column) { + return orderByAsc(true, alias, column); } - /** - * ignore - */ default Children orderByAsc(List> columns) { - return orderByAsc(true, columns); + return orderByAsc(true, null, columns); } - /** - * ignore - */ - Children orderByAsc(boolean condition, List> columns); + default Children orderByAsc(String alias, List> columns) { + return orderByAsc(true, alias, columns); + } + + default Children orderByAsc(boolean condition, List> columns) { + return orderByAsc(condition, null, columns); + } + + Children orderByAsc(boolean condition, String alias, List> columns); + - /** - * ignore - */ default Children orderByAsc(SFunction column, SFunction... columns) { - return orderByAsc(true, column, columns); + return orderByAsc(true, null, column, columns); + } + + default Children orderByAsc(String alias, SFunction column, SFunction... columns) { + return orderByAsc(true, alias, column, columns); + } + + default Children orderByAsc(boolean condition, String alias, SFunction column, SFunction... columns) { + return orderBy(condition, true, alias, column, columns); } /** @@ -318,33 +404,44 @@ public interface Func extends Serializable { * @return children */ default Children orderByAsc(boolean condition, SFunction column, SFunction... columns) { - return orderBy(condition, true, column, columns); + return orderBy(condition, true, null, column, columns); } - /** - * ignore - */ + default Children orderByDesc(SFunction column) { - return orderByDesc(true, column); + return orderByDesc(true, (String) null, column); } - /** - * ignore - */ + default Children orderByDesc(String alias, SFunction column) { + return orderByDesc(true, alias, column); + } + + default Children orderByDesc(List> columns) { - return orderByDesc(true, columns); + return orderByDesc(true, null, columns); } - /** - * ignore - */ - Children orderByDesc(boolean condition, List> columns); + default Children orderByDesc(String alias, List> columns) { + return orderByDesc(true, alias, columns); + } + + default Children orderByDesc(boolean condition, List> columns) { + return orderByDesc(condition, null, columns); + } + + Children orderByDesc(boolean condition, String alias, List> columns); + - /** - * ignore - */ default Children orderByDesc(SFunction column, SFunction... columns) { - return orderByDesc(true, column, columns); + return orderByDesc(true, null, column, columns); + } + + default Children orderByDesc(String alias, SFunction column, SFunction... columns) { + return orderByDesc(true, alias, column, columns); + } + + default Children orderByDesc(boolean condition, String alias, SFunction column, SFunction... columns) { + return orderBy(condition, false, alias, column, columns); } /** @@ -357,7 +454,11 @@ public interface Func extends Serializable { * @return children */ default Children orderByDesc(boolean condition, SFunction column, SFunction... columns) { - return orderBy(condition, false, column, columns); + return orderBy(condition, false, null, column, columns); + } + + default Children orderBy(boolean condition, boolean isAsc, SFunction column, SFunction... columns) { + return orderBy(condition, isAsc, null, column, columns); } /** @@ -370,11 +471,9 @@ public interface Func extends Serializable { * @param columns 字段数组 * @return children */ - Children orderBy(boolean condition, boolean isAsc, SFunction column, SFunction... columns); + Children orderBy(boolean condition, boolean isAsc, String alias, SFunction column, SFunction... columns); + - /** - * ignore - */ default Children having(String sqlHaving, Object... params) { return having(true, sqlHaving, params); } @@ -391,9 +490,7 @@ public interface Func extends Serializable { */ Children having(boolean condition, String sqlHaving, Object... params); - /** - * ignore - */ + default Children func(Consumer consumer) { return func(true, consumer); } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/OnCompare.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/OnCompare.java index 0906cea..c12017c 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/OnCompare.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/OnCompare.java @@ -14,13 +14,36 @@ import java.io.Serializable; */ @SuppressWarnings("unused") public interface OnCompare extends Serializable { - /** - * ignore - */ + default Children eq(SFunction column, SFunction val) { return eq(true, column, val); } + + default Children eq(String alias, SFunction column, SFunction val) { + return eq(true, alias, column, val); + } + + default Children eq(SFunction column, String rightAlias, SFunction val) { + return eq(true, column, rightAlias, val); + } + + default Children eq(String alias, SFunction column, String rightAlias, SFunction val) { + return eq(true, alias, column, rightAlias, val); + } + + default Children eq(boolean condition, SFunction column, SFunction val) { + return eq(condition, null, column, null, val); + } + + default Children eq(boolean condition, String alias, SFunction column, SFunction val) { + return eq(condition, alias, column, null, val); + } + + default Children eq(boolean condition, SFunction column, String rightAlias, SFunction val) { + return eq(condition, null, column, rightAlias, val); + } + /** * 等于 = * @@ -29,13 +52,34 @@ public interface OnCompare extends Serializable { * @param val 值 * @return children */ - Children eq(boolean condition, SFunction column, SFunction val); + Children eq(boolean condition, String alias, SFunction column, String rightAlias, SFunction val); - /** - * ignore - */ default Children ne(SFunction column, SFunction val) { - return ne(true, column, val); + return ne(true, null, column, null, val); + } + + default Children ne(String alias, SFunction column, SFunction val) { + return ne(true, alias, column, null, val); + } + + default Children ne(SFunction column, String rightAlias, SFunction val) { + return ne(true, null, column, rightAlias, val); + } + + default Children ne(String alias, SFunction column, String rightAlias, SFunction val) { + return ne(true, alias, column, rightAlias, val); + } + + default Children ne(boolean condition, SFunction column, SFunction val) { + return ne(condition, null, column, null, val); + } + + default Children ne(boolean condition, String alias, SFunction column, SFunction val) { + return ne(condition, alias, column, null, val); + } + + default Children ne(boolean condition, SFunction column, String rightAlias, SFunction val) { + return ne(condition, null, column, rightAlias, val); } /** @@ -46,13 +90,34 @@ public interface OnCompare extends Serializable { * @param val 值 * @return children */ - Children ne(boolean condition, SFunction column, SFunction val); + Children ne(boolean condition, String alias, SFunction column, String rightAlias, SFunction val); - /** - * ignore - */ default Children gt(SFunction column, SFunction val) { - return gt(true, column, val); + return gt(true, null, column, null, val); + } + + default Children gt(String alias, SFunction column, SFunction val) { + return gt(true, alias, column, null, val); + } + + default Children gt(SFunction column, String rightAlias, SFunction val) { + return gt(true, null, column, rightAlias, val); + } + + default Children gt(String alias, SFunction column, String rightAlias, SFunction val) { + return gt(true, alias, column, rightAlias, val); + } + + default Children gt(boolean condition, SFunction column, SFunction val) { + return gt(condition, null, column, null, val); + } + + default Children gt(boolean condition, String alias, SFunction column, SFunction val) { + return gt(condition, alias, column, null, val); + } + + default Children gt(boolean condition, SFunction column, String rightAlias, SFunction val) { + return gt(condition, null, column, rightAlias, val); } /** @@ -63,13 +128,34 @@ public interface OnCompare extends Serializable { * @param val 值 * @return children */ - Children gt(boolean condition, SFunction column, SFunction val); + Children gt(boolean condition, String alias, SFunction column, String rightAlias, SFunction val); - /** - * ignore - */ default Children ge(SFunction column, SFunction val) { - return ge(true, column, val); + return ge(true, null, column, null, val); + } + + default Children ge(String alias, SFunction column, SFunction val) { + return ge(true, alias, column, null, val); + } + + default Children ge(SFunction column, String rightAlias, SFunction val) { + return ge(true, null, column, rightAlias, val); + } + + default Children ge(String alias, SFunction column, String rightAlias, SFunction val) { + return ge(true, alias, column, rightAlias, val); + } + + default Children ge(boolean condition, SFunction column, SFunction val) { + return ge(condition, null, column, null, val); + } + + default Children ge(boolean condition, String alias, SFunction column, SFunction val) { + return ge(condition, alias, column, null, val); + } + + default Children ge(boolean condition, SFunction column, String rightAlias, SFunction val) { + return ge(condition, null, column, rightAlias, val); } /** @@ -80,13 +166,34 @@ public interface OnCompare extends Serializable { * @param val 值 * @return children */ - Children ge(boolean condition, SFunction column, SFunction val); + Children ge(boolean condition, String alias, SFunction column, String rightAlias, SFunction val); - /** - * ignore - */ default Children lt(SFunction column, SFunction val) { - return lt(true, column, val); + return lt(true, null, column, null, val); + } + + default Children lt(String alias, SFunction column, SFunction val) { + return lt(true, alias, column, null, val); + } + + default Children lt(SFunction column, String rightAlias, SFunction val) { + return lt(true, null, column, rightAlias, val); + } + + default Children lt(String alias, SFunction column, String rightAlias, SFunction val) { + return lt(true, alias, column, rightAlias, val); + } + + default Children lt(boolean condition, SFunction column, SFunction val) { + return lt(condition, null, column, null, val); + } + + default Children lt(boolean condition, String alias, SFunction column, SFunction val) { + return lt(condition, alias, column, null, val); + } + + default Children lt(boolean condition, SFunction column, String rightAlias, SFunction val) { + return lt(condition, null, column, rightAlias, val); } /** @@ -97,13 +204,34 @@ public interface OnCompare extends Serializable { * @param val 值 * @return children */ - Children lt(boolean condition, SFunction column, SFunction val); + Children lt(boolean condition, String alias, SFunction column, String rightAlias, SFunction val); - /** - * ignore - */ default Children le(SFunction column, SFunction val) { - return le(true, column, val); + return le(true, null, column, null, val); + } + + default Children le(String alias, SFunction column, SFunction val) { + return le(true, alias, column, null, val); + } + + default Children le(SFunction column, String rightAlias, SFunction val) { + return le(true, null, column, rightAlias, val); + } + + default Children le(String alias, SFunction column, String rightAlias, SFunction val) { + return le(true, alias, column, rightAlias, val); + } + + default Children le(boolean condition, SFunction column, SFunction val) { + return le(condition, null, column, null, val); + } + + default Children le(boolean condition, String alias, SFunction column, SFunction val) { + return le(condition, alias, column, null, val); + } + + default Children le(boolean condition, SFunction column, String rightAlias, SFunction val) { + return le(condition, null, column, rightAlias, val); } /** @@ -114,5 +242,5 @@ public interface OnCompare extends Serializable { * @param val 值 * @return children */ - Children le(boolean condition, SFunction column, SFunction val); + Children le(boolean condition, String alias, SFunction column, String rightAlias, SFunction val); } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/QueryJoin.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/QueryJoin.java index f4abfac..ddeece3 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/QueryJoin.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/QueryJoin.java @@ -25,6 +25,18 @@ public interface QueryJoin extends MPJBaseJoin, String return join(Constant.LEFT_JOIN, clazz, left, right); } + /** + * left join + * + * @param clazz 关联的实体类 + * @param left 条件 + * @param rightAlias 条件字段别名 + * @param right 条件 + */ + default Children leftJoin(Class clazz, SFunction left, String rightAlias, SFunction right) { + return join(Constant.LEFT_JOIN, clazz, left, rightAlias, right); + } + /** * left join 多条件 *

@@ -71,6 +83,18 @@ public interface QueryJoin extends MPJBaseJoin, String return join(Constant.LEFT_JOIN, clazz, alias, left, right); } + /** + * left join + * + * @param clazz 关联的实体类 + * @param rightAlias 条件字段别名 + * @param left 条件 + * @param right 条件 + */ + default Children leftJoin(Class clazz, String alias, SFunction left, String rightAlias, SFunction right) { + return join(Constant.LEFT_JOIN, clazz, alias, left, rightAlias, right); + } + /** * left join 多条件 *

@@ -111,6 +135,14 @@ public interface QueryJoin extends MPJBaseJoin, String */ default Children rightJoin(Class clazz, SFunction left, SFunction right) { return join(Constant.RIGHT_JOIN, clazz, left, right); + + } + + /** + * ignore 参考 left join + */ + default Children rightJoin(Class clazz, SFunction left, String rightAlias, SFunction right) { + return join(Constant.RIGHT_JOIN, clazz, left, rightAlias, right); } /** @@ -137,8 +169,8 @@ public interface QueryJoin extends MPJBaseJoin, String /** * ignore 参考 left join */ - default Children rightJoin(Class clazz, String alias, SFunction left, SFunction right) { - return join(Constant.RIGHT_JOIN, clazz, alias, left, right); + default Children rightJoin(Class clazz, String alias, SFunction left, String rightAlias, SFunction right) { + return join(Constant.RIGHT_JOIN, clazz, alias, left, rightAlias, right); } /** @@ -167,7 +199,14 @@ public interface QueryJoin extends MPJBaseJoin, String * ignore 参考 left join */ default Children innerJoin(Class clazz, SFunction left, SFunction right) { - return join(Constant.INNER_JOIN, clazz, on -> on.eq(left, right)); + return join(Constant.INNER_JOIN, clazz, left, right); + } + + /** + * ignore 参考 left join + */ + default Children innerJoin(Class clazz, SFunction left, String rightAlias, SFunction right) { + return join(Constant.INNER_JOIN, clazz, left, rightAlias, right); } /** @@ -227,6 +266,13 @@ public interface QueryJoin extends MPJBaseJoin, String return join(Constant.FULL_JOIN, clazz, left, right); } + /** + * ignore 参考 left join + */ + default Children fullJoin(Class clazz, SFunction left, String rightAlias, SFunction right) { + return join(Constant.FULL_JOIN, clazz, left, rightAlias, right); + } + /** * ignore 参考 left join */ @@ -255,6 +301,13 @@ public interface QueryJoin extends MPJBaseJoin, String return join(Constant.FULL_JOIN, clazz, alias, left, right); } + /** + * ignore 参考 left join + */ + default Children fullJoin(Class clazz, String alias, SFunction left, String rightAlias, SFunction right) { + return join(Constant.FULL_JOIN, clazz, alias, left, rightAlias, right); + } + /** * ignore 参考 left join */ @@ -291,6 +344,20 @@ public interface QueryJoin extends MPJBaseJoin, String return join(keyWord, clazz, on -> on.eq(left, right)); } + /** + * 自定义连表关键词 + *

+ * 查询基类 可以直接调用此方法实现以上所有功能 + * + * @param keyWord 连表关键字 + * @param clazz 连表实体类 + * @param left 关联条件 + * @param right 扩展 用于关联表的 select 和 where + */ + default Children join(String keyWord, Class clazz, SFunction left, String rightAlias, SFunction right) { + return join(keyWord, clazz, on -> on.eq(left, rightAlias,right)); + } + /** * 自定义连表关键词 *

@@ -332,6 +399,21 @@ public interface QueryJoin extends MPJBaseJoin, String return join(keyWord, clazz, alias, on -> on.eq(left, right)); } + /** + * 自定义连表关键词 + * 调用此方法 keyword 前后需要带空格 比如 " LEFT JOIN " " RIGHT JOIN " + *

+ * 查询基类 可以直接调用此方法实现以上所有功能 + * + * @param keyWord 连表关键字 + * @param clazz 连表实体类 + * @param left 关联条件 + * @param right 扩展 用于关联表的 select 和 where + */ + default Children join(String keyWord, Class clazz, String alias, SFunction left, String rightAlias, SFunction right) { + return join(keyWord, clazz, alias, on -> on.eq(left, rightAlias, right)); + } + /** * 自定义连表关键词 *

diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/TableAliasTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/TableAliasTest.java new file mode 100644 index 0000000..d1fb385 --- /dev/null +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/TableAliasTest.java @@ -0,0 +1,87 @@ +package com.github.yulichang.test.join.m; + +import com.github.yulichang.test.join.entity.AddressDO; +import com.github.yulichang.test.join.entity.AreaDO; +import com.github.yulichang.test.join.entity.UserDO; +import com.github.yulichang.test.join.mapper.UserMapper; +import com.github.yulichang.test.util.Reset; +import com.github.yulichang.test.util.ThreadLocalUtils; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +@SpringBootTest +public class TableAliasTest { + @Autowired + private UserMapper userMapper; + + @BeforeEach + void setUp() { + Reset.reset(); + } + + @Test + void tableAlias() { + ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + + "LEFT JOIN address addr1 ON (addr1.id = t.address_id) " + + "LEFT JOIN address addr2 ON (addr2.id = t.address_id2) " + + "LEFT JOIN area area1 ON (area1.id = addr1.area_id) " + + "WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " + + "GROUP BY t.id"); + MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class) + .selectAll(UserDO.class) + .leftJoin(AddressDO.class, "addr1", AddressDO::getId, UserDO::getAddressId) + .leftJoin(AddressDO.class, "addr2", AddressDO::getId, UserDO::getAddressId2) + .leftJoin(AreaDO.class, "area1", AreaDO::getId, "addr1", AddressDO::getAreaId) + .groupBy(UserDO::getId); + + List dos = userMapper.selectJoinList(UserDO.class, wrapper); + dos.forEach(System.out::println); + } + + @Test + void tableAlias2() { + ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + + "LEFT JOIN address addr1 ON (addr1.id = t.address_id) " + + "LEFT JOIN address addr2 ON (addr2.id = t.address_id2) " + + "LEFT JOIN area area1 ON (area1.id = addr2.area_id) " + + "WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " + + "GROUP BY t.id ORDER BY addr1.id DESC"); + MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class) + .selectAll(UserDO.class) + .leftJoin(AddressDO.class, "addr1", AddressDO::getId, UserDO::getAddressId) + .leftJoin(AddressDO.class, "addr2", AddressDO::getId, UserDO::getAddressId2) + .leftJoin(AreaDO.class, "area1", AreaDO::getId, "addr2", AddressDO::getAreaId) + .groupBy(UserDO::getId) + .orderByDesc("addr1", AddressDO::getId); + + List dos = userMapper.selectJoinList(UserDO.class, wrapper); + dos.forEach(System.out::println); + } + + + @Test + void tableAliasEQ() { + ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + + "LEFT JOIN address addr1 ON (addr1.id = t.address_id) " + + "LEFT JOIN address addr2 ON (addr2.id = t.address_id2) " + + "LEFT JOIN area area1 ON (area1.id = addr2.area_id) WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " + + "AND (addr1.id = ? AND addr2.id = ? AND addr1.id = ?)"); + MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class) + .selectAll(UserDO.class) + .leftJoin(AddressDO.class, "addr1", AddressDO::getId, UserDO::getAddressId) + .leftJoin(AddressDO.class, "addr2", AddressDO::getId, UserDO::getAddressId2) + .leftJoin(AreaDO.class, "area1", AreaDO::getId, "addr2", AddressDO::getAreaId) + .eq("addr1", AddressDO::getId, 1) + .eq("addr2", AddressDO::getId, 2) + .eq("addr1", AddressDO::getId, 3); + + List dos = userMapper.selectJoinList(UserDO.class, wrapper); + dos.forEach(System.out::println); + } +}