extends Serializable {
* @param val 值
* @return children
*/
- Children likeRight(boolean condition, KProperty> column, Object val);
+ Children likeRight(boolean condition, String alias, KProperty> column, Object val);
}
diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/Func.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/Func.java
index ff417ff..2b74cf9 100644
--- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/Func.java
+++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/Func.java
@@ -12,15 +12,20 @@ import java.util.function.Consumer;
*
* copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func}
*/
-@SuppressWarnings({"unused", "JavadocDeclaration"})
+@SuppressWarnings("unused")
public interface Func extends Serializable {
- /**
- * ignore
- */
- @SuppressWarnings("UnusedReturnValue")
+
default Children isNull(KProperty> column) {
- return isNull(true, column);
+ return isNull(true, null, column);
+ }
+
+ default Children isNull(String alias, KProperty> column) {
+ return isNull(true, alias, column);
+ }
+
+ default Children isNull(boolean condition, KProperty> column) {
+ return isNull(condition, null, column);
}
/**
@@ -31,13 +36,19 @@ public interface Func extends Serializable {
* @param column 字段
* @return children
*/
- Children isNull(boolean condition, KProperty> column);
+ Children isNull(boolean condition, String alias, KProperty> column);
+
- /**
- * ignore
- */
default Children isNotNull(KProperty> column) {
- return isNotNull(true, column);
+ return isNotNull(true, null, column);
+ }
+
+ default Children isNotNull(String alias, KProperty> column) {
+ return isNotNull(true, alias, column);
+ }
+
+ default Children isNotNull(boolean condition, KProperty> column) {
+ return isNotNull(condition, null, column);
}
/**
@@ -48,13 +59,19 @@ public interface Func extends Serializable {
* @param column 字段
* @return children
*/
- Children isNotNull(boolean condition, KProperty> column);
+ Children isNotNull(boolean condition, String alias, KProperty> column);
+
- /**
- * ignore
- */
default Children in(KProperty> column, Collection> coll) {
- return in(true, column, coll);
+ return in(true, null, column, coll);
+ }
+
+ default Children in(String alias, KProperty> column, Collection> coll) {
+ return in(true, alias, column, coll);
+ }
+
+ default Children in(boolean condition, KProperty> 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, KProperty> column, Collection> coll);
+ Children in(boolean condition, String alias, KProperty> column, Collection> coll);
+
- /**
- * ignore
- */
default Children in(KProperty> column, Object... values) {
- return in(true, column, values);
+ return in(true, null, column, values);
+ }
+
+ default Children in(String alias, KProperty> column, Object... values) {
+ return in(true, alias, column, values);
+ }
+
+ default Children in(boolean condition, KProperty> 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, KProperty> column, Object... values);
+ Children in(boolean condition, String alias, KProperty> column, Object... values);
+
- /**
- * ignore
- */
default Children notIn(KProperty> column, Collection> coll) {
- return notIn(true, column, coll);
+ return notIn(true, null, column, coll);
+ }
+
+ default Children notIn(String alias, KProperty> column, Collection> coll) {
+ return notIn(true, alias, column, coll);
+ }
+
+ default Children notIn(boolean condition, KProperty> 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, KProperty> column, Collection> coll);
+ Children notIn(boolean condition, String alias, KProperty> column, Collection> coll);
+
- /**
- * ignore
- */
default Children notIn(KProperty> column, Object... value) {
- return notIn(true, column, value);
+ return notIn(true, null, column, value);
+ }
+
+ default Children notIn(String alias, KProperty> column, Object... value) {
+ return notIn(true, alias, column, value);
+ }
+
+ default Children notIn(boolean condition, KProperty> 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, KProperty> column, Object... values);
+ Children notIn(boolean condition, String alias, KProperty> column, Object... values);
+
- /**
- * ignore
- */
default Children inSql(KProperty> column, String inValue) {
- return inSql(true, column, inValue);
+ return inSql(true, null, column, inValue);
+ }
+
+ default Children inSql(String alias, KProperty> column, String inValue) {
+ return inSql(true, alias, column, inValue);
+ }
+
+ default Children inSql(boolean condition, KProperty> 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, KProperty> column, String inValue);
+ Children inSql(boolean condition, String alias, KProperty> column, String inValue);
+
- /**
- * ignore
- */
default Children notInSql(KProperty> column, String inValue) {
- return notInSql(true, column, inValue);
+ return notInSql(true, null, column, inValue);
+ }
+
+ default Children notInSql(String alias, KProperty> column, String inValue) {
+ return notInSql(true, alias, column, inValue);
+ }
+
+ default Children notInSql(boolean condition, KProperty> 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, KProperty> column, String inValue);
+ Children notInSql(boolean condition, String alias, KProperty> column, String inValue);
+ default Children gtSql(KProperty> column, String inValue) {
+ return gtSql(true, null, column, inValue);
+ }
+
+ default Children gtSql(String alias, KProperty> column, String inValue) {
+ return gtSql(true, alias, column, inValue);
+ }
+
+ default Children gtSql(boolean condition, KProperty> 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语句
+ * @return children
*/
- Children gtSql(boolean condition, KProperty> column, String inValue);
+ Children gtSql(boolean condition, String alias, KProperty> column, String inValue);
- /**
- * ignore
- */
- default Children gtSql(KProperty> column, String inValue) {
- return gtSql(true, column, inValue);
+ default Children geSql(KProperty> column, String inValue) {
+ return geSql(true, null, column, inValue);
+ }
+
+ default Children geSql(String alias, KProperty> column, String inValue) {
+ return geSql(true, alias, column, inValue);
+ }
+
+ default Children geSql(boolean condition, KProperty> column, String inValue) {
+ return geSql(condition, null, column, inValue);
}
/**
@@ -193,18 +256,24 @@ 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语句
+ * @return children
*/
- Children geSql(boolean condition, KProperty> column, String inValue);
+ Children geSql(boolean condition, String alias, KProperty> column, String inValue);
- /**
- * ignore
- */
- default Children geSql(KProperty> column, String inValue) {
- return geSql(true, column, inValue);
+
+ default Children ltSql(KProperty> column, String inValue) {
+ return ltSql(true, null, column, inValue);
+ }
+
+ default Children ltSql(String alias, KProperty> column, String inValue) {
+ return ltSql(true, alias, column, inValue);
+ }
+
+ default Children ltSql(boolean condition, KProperty> column, String inValue) {
+ return ltSql(condition, null, column, inValue);
}
/**
@@ -212,18 +281,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语句
+ * @return children
*/
- Children ltSql(boolean condition, KProperty> column, String inValue);
+ Children ltSql(boolean condition, String alias, KProperty> column, String inValue);
- /**
- * ignore
- */
- default Children ltSql(KProperty> column, String inValue) {
- return ltSql(true, column, inValue);
+ default Children leSql(KProperty> column, String inValue) {
+ return leSql(true, null, column, inValue);
+ }
+
+ default Children leSql(String alias, KProperty> column, String inValue) {
+ return leSql(true, alias, column, inValue);
+ }
+
+ default Children leSql(boolean condition, KProperty> column, String inValue) {
+ return leSql(condition, null, column, inValue);
}
/**
@@ -231,44 +305,40 @@ 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语句
+ * @return children
*/
- Children leSql(boolean condition, KProperty> column, String inValue);
+ Children leSql(boolean condition, String alias, KProperty> column, String inValue);
- /**
- * ignore
- */
- default Children leSql(KProperty> column, String inValue) {
- return leSql(true, column, inValue);
- }
- /**
- * ignore
- */
- default Children groupBy(KProperty> column) {
- return groupBy(true, 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);
+ }
- /**
- * ignore
- */
- default Children groupBy(KProperty> column, KProperty>... columns) {
- return groupBy(true, column, columns);
+ default Children groupBy(boolean condition, List> columns) {
+ return groupBy(condition, null, columns);
+ }
+
+
+ Children groupBy(boolean condition, String alias, List> columns);
+
+
+ default Children groupBy(KProperty>... columns) {
+ return groupBy(true, null, columns);
+ }
+
+ default Children groupBy(String alias, KProperty>... columns) {
+ return groupBy(true, alias, columns);
+ }
+
+ default Children groupBy(boolean condition, KProperty>... columns) {
+ return groupBy(condition, null, columns);
}
/**
@@ -276,36 +346,42 @@ public interface Func extends Serializable {
* 例: groupBy("id", "name")
*
* @param condition 执行条件
- * @param column 单个字段
* @param columns 字段数组
* @return children
*/
- Children groupBy(boolean condition, KProperty> column, KProperty>... columns);
+ Children groupBy(boolean condition, String alias, KProperty>... columns);
+
- /**
- * ignore
- */
default Children orderByAsc(KProperty> column) {
- return orderByAsc(true, column);
+ return orderByAsc(true, (String) null, column);
}
- /**
- * ignore
- */
+ default Children orderByAsc(String alias, KProperty> column) {
+ return orderByAsc(true, alias, column);
+ }
+
+
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);
+ }
- /**
- * ignore
- */
- default Children orderByAsc(KProperty> column, KProperty>... columns) {
- return orderByAsc(true, column, columns);
+ default Children orderByAsc(boolean condition, List> columns) {
+ return orderByAsc(condition, null, columns);
+ }
+
+ Children orderByAsc(boolean condition, String alias, List> columns);
+
+
+ default Children orderByAsc(KProperty>... columns) {
+ return orderByAsc(true, null, columns);
+ }
+
+ default Children orderByAsc(String alias, KProperty>... columns) {
+ return orderByAsc(true, alias, columns);
}
/**
@@ -313,38 +389,38 @@ public interface Func extends Serializable {
* 例: orderByAsc("id", "name")
*
* @param condition 执行条件
- * @param column 单个字段
* @param columns 字段数组
* @return children
*/
- default Children orderByAsc(boolean condition, KProperty> column, KProperty>... columns) {
- return orderBy(condition, true, column, columns);
+ default Children orderByAsc(boolean condition, KProperty>... columns) {
+ return orderBy(condition, true, null, columns);
}
- /**
- * ignore
- */
- default Children orderByDesc(KProperty> column) {
- return orderByDesc(true, column);
+ default Children orderByAsc(boolean condition, String alias, KProperty>... columns) {
+ return orderBy(condition, true, alias, columns);
}
- /**
- * ignore
- */
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);
+ }
- /**
- * ignore
- */
- default Children orderByDesc(KProperty> column, KProperty>... columns) {
- return orderByDesc(true, column, columns);
+ default Children orderByDesc(boolean condition, List> columns) {
+ return orderByDesc(condition, null, columns);
+ }
+
+ Children orderByDesc(boolean condition, String alias, List> columns);
+
+
+ default Children orderByDesc(KProperty>... columns) {
+ return orderByDesc(true, null, columns);
+ }
+
+ default Children orderByDesc(String alias, KProperty>... columns) {
+ return orderByDesc(true, alias, columns);
}
/**
@@ -352,12 +428,19 @@ public interface Func extends Serializable {
* 例: orderByDesc("id", "name")
*
* @param condition 执行条件
- * @param column 单个字段
* @param columns 字段数组
* @return children
*/
- default Children orderByDesc(boolean condition, KProperty> column, KProperty>... columns) {
- return orderBy(condition, false, column, columns);
+ default Children orderByDesc(boolean condition, KProperty>... columns) {
+ return orderBy(condition, false, null, columns);
+ }
+
+ default Children orderByDesc(boolean condition, String alias, KProperty>... columns) {
+ return orderBy(condition, false, alias, columns);
+ }
+
+ default Children orderBy(boolean condition, boolean isAsc, KProperty>... columns) {
+ return orderBy(condition, isAsc, null, columns);
}
/**
@@ -366,15 +449,12 @@ public interface Func extends Serializable {
*
* @param condition 执行条件
* @param isAsc 是否是 ASC 排序
- * @param column 单个字段
* @param columns 字段数组
* @return children
*/
- Children orderBy(boolean condition, boolean isAsc, KProperty> column, KProperty>... columns);
+ Children orderBy(boolean condition, boolean isAsc, String alias, KProperty>... columns);
+
- /**
- * ignore
- */
default Children having(String sqlHaving, Object... params) {
return having(true, sqlHaving, params);
}
@@ -391,9 +471,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/kt/interfaces/OnCompare.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/OnCompare.java
index f26dbef..430eaa8 100644
--- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/OnCompare.java
+++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/OnCompare.java
@@ -14,11 +14,33 @@ import java.io.Serializable;
*/
@SuppressWarnings("unused")
public interface OnCompare extends Serializable {
- /**
- * ignore
- */
+
default Children eq(KProperty> column, KProperty> val) {
- return eq(true, column, val);
+ return eq(true, null, column, null, val);
+ }
+
+ default Children eq(String alias, KProperty> column, KProperty> val) {
+ return eq(true, alias, column, null, val);
+ }
+
+ default Children eq(KProperty> column, String rightAlias, KProperty> val) {
+ return eq(true, null, column, rightAlias, val);
+ }
+
+ default Children eq(String alias, KProperty> column, String rightAlias, KProperty> val) {
+ return eq(true, alias, column, rightAlias, val);
+ }
+
+ default Children eq(boolean condition, KProperty> column, KProperty> val) {
+ return eq(condition, null, column, null, val);
+ }
+
+ default Children eq(boolean condition, String alias, KProperty> column, KProperty> val) {
+ return eq(condition, alias, column, null, val);
+ }
+
+ default Children eq(boolean condition, KProperty> column, String rightAlias, KProperty> val) {
+ return eq(condition, null, column, rightAlias, val);
}
/**
@@ -29,13 +51,35 @@ public interface OnCompare extends Serializable {
* @param val 值
* @return children
*/
- Children eq(boolean condition, KProperty> column, KProperty> val);
+ Children eq(boolean condition, String alias, KProperty> column, String rightAlias, KProperty> val);
+
- /**
- * ignore
- */
default Children ne(KProperty> column, KProperty> val) {
- return ne(true, column, val);
+ return ne(true, null, column, null, val);
+ }
+
+ default Children ne(String alias, KProperty> column, KProperty> val) {
+ return ne(true, alias, column, null, val);
+ }
+
+ default Children ne(KProperty> column, String rightAlias, KProperty> val) {
+ return ne(true, null, column, rightAlias, val);
+ }
+
+ default Children ne(String alias, KProperty> column, String rightAlias, KProperty> val) {
+ return ne(true, alias, column, rightAlias, val);
+ }
+
+ default Children ne(boolean condition, KProperty> column, KProperty> val) {
+ return ne(condition, null, column, null, val);
+ }
+
+ default Children ne(boolean condition, String alias, KProperty> column, KProperty> val) {
+ return ne(condition, alias, column, null, val);
+ }
+
+ default Children ne(boolean condition, KProperty> column, String rightAlias, KProperty> val) {
+ return ne(condition, null, column, rightAlias, val);
}
/**
@@ -46,13 +90,35 @@ public interface OnCompare extends Serializable {
* @param val 值
* @return children
*/
- Children ne(boolean condition, KProperty> column, KProperty> val);
+ Children ne(boolean condition, String alias, KProperty> column, String rightAlias, KProperty> val);
+
- /**
- * ignore
- */
default Children gt(KProperty> column, KProperty> val) {
- return gt(true, column, val);
+ return gt(true, null, column, null, val);
+ }
+
+ default Children gt(String alias, KProperty> column, KProperty> val) {
+ return gt(true, alias, column, null, val);
+ }
+
+ default Children gt(KProperty> column, String rightAlias, KProperty> val) {
+ return gt(true, null, column, rightAlias, val);
+ }
+
+ default Children gt(String alias, KProperty> column, String rightAlias, KProperty> val) {
+ return gt(true, alias, column, rightAlias, val);
+ }
+
+ default Children gt(boolean condition, KProperty> column, KProperty> val) {
+ return gt(condition, null, column, null, val);
+ }
+
+ default Children gt(boolean condition, String alias, KProperty> column, KProperty> val) {
+ return gt(condition, alias, column, null, val);
+ }
+
+ default Children gt(boolean condition, KProperty> column, String rightAlias, KProperty> val) {
+ return gt(condition, null, column, rightAlias, val);
}
/**
@@ -63,13 +129,35 @@ public interface OnCompare extends Serializable {
* @param val 值
* @return children
*/
- Children gt(boolean condition, KProperty> column, KProperty> val);
+ Children gt(boolean condition, String alias, KProperty> column, String rightAlias, KProperty> val);
+
- /**
- * ignore
- */
default Children ge(KProperty> column, KProperty> val) {
- return ge(true, column, val);
+ return ge(true, null, column, null, val);
+ }
+
+ default Children ge(String alias, KProperty> column, KProperty> val) {
+ return ge(true, alias, column, null, val);
+ }
+
+ default Children ge(KProperty> column, String rightAlias, KProperty> val) {
+ return ge(true, null, column, rightAlias, val);
+ }
+
+ default Children ge(String alias, KProperty> column, String rightAlias, KProperty> val) {
+ return ge(true, alias, column, rightAlias, val);
+ }
+
+ default Children ge(boolean condition, KProperty> column, KProperty> val) {
+ return ge(condition, null, column, null, val);
+ }
+
+ default Children ge(boolean condition, String alias, KProperty> column, KProperty> val) {
+ return ge(condition, alias, column, null, val);
+ }
+
+ default Children ge(boolean condition, KProperty> column, String rightAlias, KProperty> val) {
+ return ge(condition, null, column, rightAlias, val);
}
/**
@@ -80,13 +168,35 @@ public interface OnCompare extends Serializable {
* @param val 值
* @return children
*/
- Children ge(boolean condition, KProperty> column, KProperty> val);
+ Children ge(boolean condition, String alias, KProperty> column, String rightAlias, KProperty> val);
+
- /**
- * ignore
- */
default Children lt(KProperty> column, KProperty> val) {
- return lt(true, column, val);
+ return lt(true, null, column, null, val);
+ }
+
+ default Children lt(String alias, KProperty> column, KProperty> val) {
+ return lt(true, alias, column, null, val);
+ }
+
+ default Children lt(KProperty> column, String rightAlias, KProperty> val) {
+ return lt(true, null, column, rightAlias, val);
+ }
+
+ default Children lt(String alias, KProperty> column, String rightAlias, KProperty> val) {
+ return lt(true, alias, column, rightAlias, val);
+ }
+
+ default Children lt(boolean condition, KProperty> column, KProperty> val) {
+ return lt(condition, null, column, null, val);
+ }
+
+ default Children lt(boolean condition, String alias, KProperty> column, KProperty> val) {
+ return lt(condition, alias, column, null, val);
+ }
+
+ default Children lt(boolean condition, KProperty> column, String rightAlias, KProperty> val) {
+ return lt(condition, null, column, rightAlias, val);
}
/**
@@ -97,13 +207,35 @@ public interface OnCompare extends Serializable {
* @param val 值
* @return children
*/
- Children lt(boolean condition, KProperty> column, KProperty> val);
+ Children lt(boolean condition, String alias, KProperty> column, String rightAlias, KProperty> val);
+
- /**
- * ignore
- */
default Children le(KProperty> column, KProperty> val) {
- return le(true, column, val);
+ return le(true, null, column, null, val);
+ }
+
+ default Children le(String alias, KProperty> column, KProperty> val) {
+ return le(true, alias, column, null, val);
+ }
+
+ default Children le(KProperty> column, String rightAlias, KProperty> val) {
+ return le(true, null, column, rightAlias, val);
+ }
+
+ default Children le(String alias, KProperty> column, String rightAlias, KProperty> val) {
+ return le(true, alias, column, rightAlias, val);
+ }
+
+ default Children le(boolean condition, KProperty> column, KProperty> val) {
+ return le(condition, null, column, null, val);
+ }
+
+ default Children le(boolean condition, String alias, KProperty> column, KProperty> val) {
+ return le(condition, alias, column, null, val);
+ }
+
+ default Children le(boolean condition, KProperty> column, String rightAlias, KProperty> val) {
+ return le(condition, null, column, rightAlias, val);
}
/**
@@ -114,5 +246,5 @@ public interface OnCompare extends Serializable {
* @param val 值
* @return children
*/
- Children le(boolean condition, KProperty> column, KProperty> val);
+ Children le(boolean condition, String alias, KProperty> column, String rightAlias, KProperty> val);
}
diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/QueryJoin.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/QueryJoin.java
index d580e69..2767851 100644
--- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/QueryJoin.java
+++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/QueryJoin.java
@@ -26,6 +26,17 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.LEFT_JOIN, clazz, left, right);
}
+ /**
+ * left join
+ *
+ * @param clazz 关联的实体类
+ * @param left 条件
+ * @param right 条件
+ */
+ default Children leftJoin(Class> clazz, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.LEFT_JOIN, clazz, left, rightAlias, right);
+ }
+
/**
* left join 多条件
*
@@ -72,6 +83,17 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.LEFT_JOIN, clazz, alias, left, right);
}
+ /**
+ * left join
+ *
+ * @param clazz 关联的实体类
+ * @param left 条件
+ * @param right 条件
+ */
+ default Children leftJoin(Class> clazz, String alias, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.LEFT_JOIN, clazz, alias, left, rightAlias, right);
+ }
+
/**
* left join 多条件
*
@@ -114,6 +136,13 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.RIGHT_JOIN, clazz, left, right);
}
+ /**
+ * ignore 参考 left join
+ */
+ default Children rightJoin(Class> clazz, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.RIGHT_JOIN, clazz, left, rightAlias, right);
+ }
+
/**
* ignore 参考 left join
*/
@@ -142,6 +171,13 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.RIGHT_JOIN, clazz, alias, left, right);
}
+ /**
+ * ignore 参考 left join
+ */
+ default Children rightJoin(Class> clazz, String alias, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.RIGHT_JOIN, clazz, alias, left, rightAlias, right);
+ }
+
/**
* ignore 参考 left join
*/
@@ -171,6 +207,14 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.INNER_JOIN, clazz, on -> on.eq(left, right));
}
+ /**
+ * ignore 参考 left join
+ */
+ default Children innerJoin(Class> clazz, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.INNER_JOIN, clazz, left, rightAlias, right);
+ }
+
+
/**
* ignore 参考 left join
*/
@@ -200,6 +244,13 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.INNER_JOIN, clazz, alias, on -> on.eq(left, right));
}
+ /**
+ * ignore 参考 left join
+ */
+ default Children innerJoin(Class> clazz, String alias, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.INNER_JOIN, clazz, alias, left, rightAlias, right);
+ }
+
/**
* ignore 参考 left join
*/
@@ -228,6 +279,13 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(Constant.FULL_JOIN, clazz, left, right);
}
+ /**
+ * ignore 参考 left join
+ */
+ default Children fullJoin(Class> clazz, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.FULL_JOIN, clazz, left, rightAlias, right);
+ }
+
/**
* ignore 参考 left join
*/
@@ -256,6 +314,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, KProperty> left, String rightAlias, KProperty> right) {
+ return join(Constant.FULL_JOIN, clazz, alias, left, rightAlias, right);
+ }
+
/**
* ignore 参考 left join
*/
@@ -292,6 +357,13 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(keyWord, clazz, on -> on.eq(left, right));
}
+ /**
+ * ignore
+ */
+ default Children join(String keyWord, Class> clazz, KProperty> left, String rightAlias, KProperty> right) {
+ return join(keyWord, clazz, on -> on.eq(left, rightAlias, right));
+ }
+
/**
* 自定义连表关键词
*
@@ -333,6 +405,13 @@ public interface QueryJoin extends MPJBaseJoin, String
return join(keyWord, clazz, alias, on -> on.eq(left, right));
}
+ /**
+ * ignore
+ */
+ default Children join(String keyWord, Class> clazz, String alias, KProperty> left, String rightAlias, KProperty> right) {
+ return join(keyWord, clazz, alias, on -> on.eq(left, rightAlias, right));
+ }
+
/**
* 自定义连表关键词
*
diff --git a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MPConfig.java b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MPConfig.java
deleted file mode 100644
index 075f156..0000000
--- a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MPConfig.java
+++ /dev/null
@@ -1,150 +0,0 @@
-//package com.github.yulichang.test.config;
-//
-//import com.baomidou.mybatisplus.core.injector.AbstractMethod;
-//import com.baomidou.mybatisplus.core.injector.ISqlInjector;
-//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-//import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
-//import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-//import com.github.yulichang.injector.MPJSqlInjector;
-//import com.github.yulichang.test.util.ThreadLocalUtils;
-//import org.apache.ibatis.cache.CacheKey;
-//import org.apache.ibatis.executor.Executor;
-//import org.apache.ibatis.executor.statement.StatementHandler;
-//import org.apache.ibatis.mapping.BoundSql;
-//import org.apache.ibatis.mapping.MappedStatement;
-//import org.apache.ibatis.plugin.*;
-//import org.apache.ibatis.session.ResultHandler;
-//import org.apache.ibatis.session.RowBounds;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.context.annotation.Primary;
-//import org.springframework.core.Ordered;
-//import org.springframework.core.annotation.Order;
-//import org.springframework.stereotype.Component;
-//
-//import java.sql.Connection;
-//import java.util.List;
-//import java.util.Objects;
-//import java.util.StringTokenizer;
-//
-///**
-// * mp 3.3.x
-// */
-//@Configuration
-//public class MPConfig {
-//
-// @Bean
-// public PaginationInterceptor mybatisPlusInterceptor() {
-// return new PaginationInterceptor();
-// }
-//
-// @Bean
-// @Primary
-// @Order(Ordered.HIGHEST_PRECEDENCE)
-// public ISqlInjector sqlInjector() {
-// return new MPJSqlInjector() {
-// @Override
-// public List getMethodList(Class> mapperClass) {
-// List list = super.getMethodList(mapperClass);
-// //添加你的方法
-// list.add(new InsertBatchSomeColumn());
-// return list;
-// }
-// };
-// }
-//
-// @Component
-// @Intercepts({
-// @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class}),
-// @Signature(type = StatementHandler.class, method = "getBoundSql", args = {}),
-// @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
-// @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
-// @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}),
-// })
-// public static class SqlInterceptor implements Interceptor {
-//
-// @Override
-// public Object intercept(Invocation invocation) throws Throwable {
-// Object target = invocation.getTarget();
-// BoundSql boundSql = null;
-// if (target instanceof StatementHandler) {
-// boundSql = ((StatementHandler) target).getBoundSql();
-// String sql = boundSql.getSql();
-// List strings = ThreadLocalUtils.get();
-// if (CollectionUtils.isNotEmpty(strings)) {
-// boolean flag = false;
-// String ss = null;
-// for (String s : strings) {
-// if (sql != null && s != null) {
-// String s1 = formatSql(sql);
-// String s2 = formatSql(s);
-// if (StringUtils.isNotBlank(s)) {
-// if (!Objects.equals(s1.toLowerCase(), s2.toLowerCase())) {
-// ss = s;
-// } else {
-// flag = true;
-// break;
-//
-// }
-// }
-// }
-// }
-// if (flag) {
-// System.out.println("===============================================");
-// System.out.println();
-// System.out.println("pass");
-// System.out.println();
-// System.out.println("===============================================");
-// } else {
-// System.err.println("执行sql: " + removeExtraWhitespaces(sql));
-// System.err.println("预期sql: " + removeExtraWhitespaces(ss));
-// throw new RuntimeException("sql error");
-// }
-// }
-// }
-// System.out.println(boundSql);
-// return invocation.proceed();
-// }
-//
-// @Override
-// public Object plugin(Object target) {
-// if (target instanceof Executor || target instanceof StatementHandler) {
-// return Plugin.wrap(target, this);
-// }
-// return target;
-// }
-//
-// private String formatSql(String sql) {
-// if (StringUtils.isBlank(sql)) {
-// return sql;
-// }
-// sql = sql.replaceAll("\n", "");
-// sql = sql.replaceAll("\r", "");
-// sql = sql.replaceAll("\t", "");
-// return dg(sql);
-// }
-//
-// private String dg(String str) {
-// if (str.contains(" ")) {
-// str = str.replaceAll(" ", "");
-// return dg(str);
-// }
-// return str;
-// }
-//
-// private String removeExtraWhitespaces(String original) {
-// StringTokenizer tokenizer = new StringTokenizer(original);
-// StringBuilder builder = new StringBuilder();
-// boolean hasMoreTokens = tokenizer.hasMoreTokens();
-// while (hasMoreTokens) {
-// builder.append(tokenizer.nextToken());
-// hasMoreTokens = tokenizer.hasMoreTokens();
-// if (hasMoreTokens) {
-// builder.append(' ');
-// }
-// }
-// return builder.toString();
-// }
-// }
-//}
diff --git a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java
index 2d9c743..f2a9b23 100644
--- a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java
+++ b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java
@@ -97,6 +97,10 @@ public class MybatisPlusConfig {
@SneakyThrows
public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
String sql = boundSql.getSql();
+ check(sql);
+ }
+
+ private void check(String sql) {
List sqlList = ThreadLocalUtils.get();
if (CollectionUtils.isNotEmpty(sqlList)) {
if (sqlList.stream().anyMatch(e -> Objects.equals(formatSql(sql), formatSql(e)))) {
@@ -122,20 +126,7 @@ public class MybatisPlusConfig {
if (sql.toUpperCase().startsWith("SELECT")) {
return;
}
- List sqlList = ThreadLocalUtils.get();
- if (CollectionUtils.isNotEmpty(sqlList)) {
- if (sqlList.stream().anyMatch(e -> Objects.equals(formatSql(sql), formatSql(e)))) {
- System.out.println("===============================================");
- System.out.println();
- System.out.println("pass");
- System.out.println();
- System.out.println("===============================================");
- } else {
- System.err.println("执行sql: " + SqlSourceBuilder.removeExtraWhitespaces(sql));
- sqlList.forEach(i -> System.err.println("预期sql: " + SqlSourceBuilder.removeExtraWhitespaces(i)));
- throw new RuntimeException("sql error");
- }
- }
+ check(sql);
}
}
diff --git a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt
index e0f0b9c..78c94a8 100644
--- a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt
+++ b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt
@@ -25,8 +25,9 @@ class CustomWrapperTest {
//自定义wrapper扩展
class CWrapper : KtLambdaWrapper() {
+
fun eqIfAbsent(column: KProperty<*>, `val`: Any?): CWrapper {
- super.eq(Objects.nonNull(`val`), column, `val`)
+ eq(Objects.nonNull(`val`), column, `val`)
return this
}
diff --git a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/OrderByTest.kt b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/OrderByTest.kt
new file mode 100644
index 0000000..9e22b85
--- /dev/null
+++ b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/OrderByTest.kt
@@ -0,0 +1,49 @@
+package com.github.yulichang.test.kt.m
+
+import com.github.yulichang.kt.KtLambdaWrapper
+import com.github.yulichang.test.kt.entity.UserDO
+import com.github.yulichang.test.util.ThreadLocalUtils
+import com.github.yulichang.toolkit.KtWrappers
+import org.junit.jupiter.api.BeforeEach
+import org.springframework.boot.test.context.SpringBootTest
+import kotlin.reflect.KMutableProperty1
+
+@SpringBootTest
+class OrderByTest {
+ @BeforeEach
+ fun setUp() {
+ com.github.yulichang.test.util.Reset.reset()
+ }
+
+ @org.junit.jupiter.api.Test
+ fun orderBy() {
+ 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 WHERE t.del = false AND (t.id = ?) ORDER BY t.id ASC, t.`name` ASC, t.pid ASC"
+ )
+ val columList: List> =
+ listOf>(UserDO::id, UserDO::name, UserDO::pid)
+ val wrapper: KtLambdaWrapper = KtWrappers.query(UserDO::class.java)
+ .selectAll(UserDO::class.java)
+ .eq(UserDO::id, 1)
+ .orderByAsc(columList)
+ val list: List = wrapper.list()
+ list.forEach(System.out::println)
+ }
+
+ @org.junit.jupiter.api.Test
+ fun orderBy1() {
+ 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 WHERE t.del = false AND (t.id = ?) GROUP BY t.id, t.`name`, t.pid"
+ )
+ val columList: List> =
+ listOf>(UserDO::id, UserDO::name, UserDO::pid)
+ val wrapper: KtLambdaWrapper = KtWrappers.query(UserDO::class.java)
+ .selectAll(UserDO::class.java)
+ .eq(UserDO::id, 1)
+ .groupBy(columList)
+ val list: List = wrapper.list()
+ list.forEach(System.out::println)
+ }
+}
diff --git a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/TableAliasTest.kt b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/TableAliasTest.kt
new file mode 100644
index 0000000..e6a4d1a
--- /dev/null
+++ b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/TableAliasTest.kt
@@ -0,0 +1,88 @@
+package com.github.yulichang.test.kt.m
+
+import com.github.yulichang.kt.KtLambdaWrapper
+import com.github.yulichang.test.kt.entity.AddressDO
+import com.github.yulichang.test.kt.entity.AreaDO
+import com.github.yulichang.test.kt.entity.UserDO
+import com.github.yulichang.test.kt.mapper.UserMapper
+import com.github.yulichang.test.util.Reset
+import com.github.yulichang.test.util.ThreadLocalUtils
+import com.github.yulichang.toolkit.KtWrappers
+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
+
+@SpringBootTest
+class TableAliasTest {
+
+ @Autowired
+ private val userMapper: UserMapper? = null
+
+ @BeforeEach
+ fun setUp() {
+ Reset.reset()
+ }
+
+ @Test
+ fun 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"
+ )
+ val wrapper: KtLambdaWrapper = KtWrappers.query(UserDO::class.java)
+ .selectAll(UserDO::class.java)
+ .leftJoin(AddressDO::class.java, "addr1", AddressDO::id, UserDO::addressId)
+ .leftJoin(AddressDO::class.java, "addr2", AddressDO::id, UserDO::addressId2)
+ .leftJoin(AreaDO::class.java, "area1", AreaDO::id, "addr1", AddressDO::areaId)
+ .groupBy(UserDO::id)
+ val dos: List = userMapper!!.selectJoinList(UserDO::class.java, wrapper)
+ dos.forEach(System.out::println)
+ }
+
+ @Test
+ fun 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"
+ )
+ val wrapper: KtLambdaWrapper = KtWrappers.query(UserDO::class.java)
+ .selectAll(UserDO::class.java)
+ .leftJoin(AddressDO::class.java, "addr1", AddressDO::id, UserDO::addressId)
+ .leftJoin(AddressDO::class.java, "addr2", AddressDO::id, UserDO::addressId2)
+ .leftJoin(AreaDO::class.java, "area1", AreaDO::id, "addr2", AddressDO::areaId)
+ .groupBy(UserDO::id)
+ .orderByDesc("addr1", AddressDO::id)
+ val dos: List = userMapper!!.selectJoinList(UserDO::class.java, wrapper)
+ dos.forEach(System.out::println)
+ }
+
+ @Test
+ fun 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 = ?)"
+ )
+ val wrapper: KtLambdaWrapper = KtWrappers.query(UserDO::class.java)
+ .selectAll(UserDO::class.java)
+ .leftJoin(AddressDO::class.java, "addr1", AddressDO::id, UserDO::addressId)
+ .leftJoin(AddressDO::class.java, "addr2", AddressDO::id, UserDO::addressId2)
+ .leftJoin(AreaDO::class.java, "area1", AreaDO::id, "addr2", AddressDO::areaId)
+ .eq("addr1", AddressDO::id, 1)
+ .eq("addr2", AddressDO::id, 2)
+ .eq("addr1", AddressDO::id, 3)
+ val dos: List = userMapper!!.selectJoinList(UserDO::class.java, wrapper)
+ dos.forEach(System.out::println)
+ }
+}