From 1fe9ffb80c5a1032e06ed3d3cd772c77726ea014 Mon Sep 17 00:00:00 2001
From: admin <570810310@qq.com>
Date: Tue, 2 Feb 2021 11:17:07 +0800
Subject: [PATCH] update
---
.../interceptor/MyResultInterceptor.java | 37 ++++++++++-------
...mbda.java => MyAbstractLambdaWrapper.java} | 2 +-
.../mybatisplus/query/MyAbstractWrapper.java | 11 ++++-
...daQuery.java => MyLambdaQueryWrapper.java} | 40 ++++++++-----------
.../{MyQuery.java => MyQueryWrapper.java} | 30 +++++++-------
...per.java => MyJoinLambdaQueryWrapper.java} | 36 +++++++++--------
6 files changed, 83 insertions(+), 73 deletions(-)
rename src/main/java/com/github/mybatisplus/query/{MyAbstractLambda.java => MyAbstractLambdaWrapper.java} (97%)
rename src/main/java/com/github/mybatisplus/query/{MyLambdaQuery.java => MyLambdaQueryWrapper.java} (81%)
rename src/main/java/com/github/mybatisplus/query/{MyQuery.java => MyQueryWrapper.java} (70%)
rename src/main/java/com/github/mybatisplus/wrapper/{MyLambdaQueryWrapper.java => MyJoinLambdaQueryWrapper.java} (82%)
diff --git a/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java b/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java
index b910368..a42d855 100644
--- a/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java
+++ b/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java
@@ -24,6 +24,16 @@ import java.util.Objects;
@Intercepts({@Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class})})
public class MyResultInterceptor implements Interceptor {
+ private static Field parameterHandler = null;
+
+ static {
+ try {
+ parameterHandler = DefaultResultSetHandler.class.getDeclaredField("parameterHandler");
+ parameterHandler.setAccessible(true);
+ } catch (NoSuchFieldException e) {
+ e.printStackTrace();
+ }
+ }
@Override
public Object intercept(Invocation invocation) throws Throwable {
@@ -66,23 +76,20 @@ public class MyResultInterceptor implements Interceptor {
* @see MybatisParameterHandler
*/
public static Class> getFieldVal(DefaultResultSetHandler handler) {
- Field[] fieldList = handler.getClass().getDeclaredFields();
- for (Field f : fieldList) {
- if (f.getName().equals("parameterHandler")) {
- f.setAccessible(true);
- try {
- MybatisParameterHandler mybatisParameterHandler = (MybatisParameterHandler) f.get(handler);
- Object object = mybatisParameterHandler.getParameterObject();
- if (object instanceof Map) {
- Map, ?> args = (Map, ?>) object;
- return (Class>) args.get(Constant.CLAZZ);
- }
- } catch (Exception e) {
- return null;
- }
+ try {
+ MybatisParameterHandler mybatisParameterHandler = (MybatisParameterHandler) parameterHandler.get(handler);
+ Object object = mybatisParameterHandler.getParameterObject();
+ if (Objects.isNull(object)) {
+ return null;
}
+ if (object instanceof Map) {
+ Map, ?> args = (Map, ?>) object;
+ return (Class>) args.get(Constant.CLAZZ);
+ }
+ return null;
+ } catch (IllegalAccessException e) {
+ return null;
}
- return null;
}
@Override
diff --git a/src/main/java/com/github/mybatisplus/query/MyAbstractLambda.java b/src/main/java/com/github/mybatisplus/query/MyAbstractLambdaWrapper.java
similarity index 97%
rename from src/main/java/com/github/mybatisplus/query/MyAbstractLambda.java
rename to src/main/java/com/github/mybatisplus/query/MyAbstractLambdaWrapper.java
index a9ccf50..8ce6ed2 100644
--- a/src/main/java/com/github/mybatisplus/query/MyAbstractLambda.java
+++ b/src/main/java/com/github/mybatisplus/query/MyAbstractLambdaWrapper.java
@@ -18,7 +18,7 @@ import static java.util.stream.Collectors.joining;
* copy {@link com.baomidou.mybatisplus.core.conditions.AbstractLambdaWrapper}
*/
@SuppressWarnings("serial")
-public abstract class MyAbstractLambda>
+public abstract class MyAbstractLambdaWrapper>
extends MyAbstractWrapper, Children> {
private Map columnMap = null;
diff --git a/src/main/java/com/github/mybatisplus/query/MyAbstractWrapper.java b/src/main/java/com/github/mybatisplus/query/MyAbstractWrapper.java
index e01e329..8637d42 100644
--- a/src/main/java/com/github/mybatisplus/query/MyAbstractWrapper.java
+++ b/src/main/java/com/github/mybatisplus/query/MyAbstractWrapper.java
@@ -35,7 +35,8 @@ import static java.util.stream.Collectors.joining;
*/
@SuppressWarnings({"serial", "unchecked"})
public abstract class MyAbstractWrapper> extends MyWrapper
- implements Compare, Nested, Join, Func {
+ implements Compare, Nested, Join, Func,
+ MyJoin {
/**
* 占位符
@@ -516,4 +517,12 @@ public abstract class MyAbstractWrapper extends MyAbstractLambda>
- implements Query, T, SFunction>, MyJoin> {
+public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper>
+ implements Query, T, SFunction>, MyJoin> {
/**
* 查询字段
@@ -45,14 +45,14 @@ public class MyLambdaQuery extends MyAbstractLambda>
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
- public MyLambdaQuery() {
+ public MyLambdaQueryWrapper() {
this((T) null);
}
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
- public MyLambdaQuery(T entity) {
+ public MyLambdaQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
@@ -60,7 +60,7 @@ public class MyLambdaQuery extends MyAbstractLambda>
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
- public MyLambdaQuery(Class entityClass) {
+ public MyLambdaQueryWrapper(Class entityClass) {
super.setEntityClass(entityClass);
super.initNeed();
}
@@ -68,9 +68,9 @@ public class MyLambdaQuery extends MyAbstractLambda>
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(...)
*/
- MyLambdaQuery(T entity, Class entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq,
- Map paramNameValuePairs, MergeSegments mergeSegments,
- SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
+ MyLambdaQueryWrapper(T entity, Class entityClass, SharedString from, SharedString sqlSelect, AtomicInteger paramNameSeq,
+ Map paramNameValuePairs, MergeSegments mergeSegments,
+ SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity);
super.setEntityClass(entityClass);
this.paramNameSeq = paramNameSeq;
@@ -90,7 +90,7 @@ public class MyLambdaQuery extends MyAbstractLambda>
*/
@SafeVarargs
@Override
- public final MyLambdaQuery select(SFunction... columns) {
+ public final MyLambdaQueryWrapper select(SFunction... columns) {
if (ArrayUtils.isNotEmpty(columns)) {
String s = columnsToString(false, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@@ -103,7 +103,7 @@ public class MyLambdaQuery extends MyAbstractLambda>
}
@SafeVarargs
- public final MyLambdaQuery select(String... columns) {
+ public final MyLambdaQueryWrapper select(String... columns) {
if (ArrayUtils.isNotEmpty(columns)) {
String s = String.join(StringPool.COMMA, columns);
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@@ -127,7 +127,7 @@ public class MyLambdaQuery extends MyAbstractLambda>
* @return this
*/
@Override
- public MyLambdaQuery select(Class entityClass, Predicate predicate) {
+ public MyLambdaQueryWrapper select(Class entityClass, Predicate predicate) {
if (entityClass == null) {
entityClass = getEntityClass();
} else {
@@ -145,7 +145,7 @@ public class MyLambdaQuery extends MyAbstractLambda>
return typedThis;
}
- public final MyLambdaQuery selectAll(Class clazz) {
+ public final MyLambdaQueryWrapper selectAll(Class clazz) {
TableInfo info = TableInfoHelper.getTableInfo(clazz);
List list = new ArrayList<>();
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
@@ -162,8 +162,8 @@ public class MyLambdaQuery extends MyAbstractLambda>
/**
* 返回一个支持 lambda 函数写法的 wrapper
*/
- public MyQuery stringQuery() {
- return new MyQuery<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
+ public MyQueryWrapper stringQuery() {
+ return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs,
expression, sqlSelect, from, lastSql, sqlComment, sqlFirst);
}
@@ -186,8 +186,8 @@ public class MyLambdaQuery extends MyAbstractLambda>
* 故 sqlSelect from不向下传递
*/
@Override
- protected MyLambdaQuery instance() {
- return new MyLambdaQuery<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
+ protected MyLambdaQueryWrapper instance() {
+ return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
}
@@ -197,12 +197,4 @@ public class MyLambdaQuery extends MyAbstractLambda>
sqlSelect.toNull();
}
- @Override
- public MyLambdaQuery join(String keyWord, boolean condition, String joinSql) {
- if (condition) {
- from.setStringValue(from.getStringValue() + keyWord + joinSql);
- }
- return typedThis;
- }
-
}
diff --git a/src/main/java/com/github/mybatisplus/query/MyQuery.java b/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java
similarity index 70%
rename from src/main/java/com/github/mybatisplus/query/MyQuery.java
rename to src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java
index 93ecf2a..6f8beb3 100644
--- a/src/main/java/com/github/mybatisplus/query/MyQuery.java
+++ b/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java
@@ -17,8 +17,8 @@ import java.util.function.Predicate;
* copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
*/
@SuppressWarnings("serial")
-public class MyQuery extends MyAbstractWrapper>
- implements Query, T, String> {
+public class MyQueryWrapper extends MyAbstractWrapper>
+ implements Query, T, String> {
/**
* 查询字段
@@ -30,16 +30,16 @@ public class MyQuery extends MyAbstractWrapper>
*/
private SharedString alias = new SharedString(Constant.TABLE_ALIAS);
- public MyQuery() {
+ public MyQueryWrapper() {
this(null);
}
- public MyQuery(T entity) {
+ public MyQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
- public MyQuery(T entity, String... columns) {
+ public MyQueryWrapper(T entity, String... columns) {
super.setEntity(entity);
super.initNeed();
this.select(columns);
@@ -50,9 +50,9 @@ public class MyQuery extends MyAbstractWrapper>
*
* @param entityClass 本不应该需要的
*/
- public MyQuery(T entity, Class entityClass, AtomicInteger paramNameSeq,
- Map paramNameValuePairs, MergeSegments mergeSegments,
- SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
+ public MyQueryWrapper(T entity, Class entityClass, AtomicInteger paramNameSeq,
+ Map paramNameValuePairs, MergeSegments mergeSegments,
+ SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity);
super.setEntityClass(entityClass);
this.paramNameSeq = paramNameSeq;
@@ -66,7 +66,7 @@ public class MyQuery extends MyAbstractWrapper>
}
@Override
- public MyQuery select(String... columns) {
+ public MyQueryWrapper select(String... columns) {
if (ArrayUtils.isNotEmpty(columns)) {
this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
}
@@ -74,7 +74,7 @@ public class MyQuery extends MyAbstractWrapper>
}
@Override
- public MyQuery select(Class entityClass, Predicate predicate) {
+ public MyQueryWrapper select(Class entityClass, Predicate predicate) {
super.setEntityClass(entityClass);
this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate));
return typedThis;
@@ -97,9 +97,9 @@ public class MyQuery extends MyAbstractWrapper>
/**
* 返回一个支持 lambda 函数写法的 wrapper
*/
- public MyLambdaQuery lambda() {
- return new MyLambdaQuery<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs,
- expression, lastSql, sqlComment, sqlFirst);
+ public MyLambdaQueryWrapper lambda() {
+ return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs,
+ expression, lastSql, sqlComment, sqlFirst);
}
/**
@@ -109,8 +109,8 @@ public class MyQuery extends MyAbstractWrapper>
*
*/
@Override
- protected MyQuery instance() {
- return new MyQuery<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
+ protected MyQueryWrapper instance() {
+ return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(),
null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
}
diff --git a/src/main/java/com/github/mybatisplus/wrapper/MyLambdaQueryWrapper.java b/src/main/java/com/github/mybatisplus/wrapper/MyJoinLambdaQueryWrapper.java
similarity index 82%
rename from src/main/java/com/github/mybatisplus/wrapper/MyLambdaQueryWrapper.java
rename to src/main/java/com/github/mybatisplus/wrapper/MyJoinLambdaQueryWrapper.java
index 5092634..76b17dd 100644
--- a/src/main/java/com/github/mybatisplus/wrapper/MyLambdaQueryWrapper.java
+++ b/src/main/java/com/github/mybatisplus/wrapper/MyJoinLambdaQueryWrapper.java
@@ -26,11 +26,11 @@ import java.util.stream.Collectors;
* copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper}
*/
@SuppressWarnings("serial")
-public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper>
- implements MySFunctionQuery>, MyLambdaJoin> {
+public class MyJoinLambdaQueryWrapper extends MyAbstractLambdaWrapper>
+ implements MySFunctionQuery>, MyLambdaJoin> {
/**
- * 查询字段
+ * 查询字段 sql
*/
private SharedString sqlSelect = new SharedString();
@@ -44,21 +44,23 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper selectColumns = new ArrayList<>();
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
- public MyLambdaQueryWrapper() {
+ public MyJoinLambdaQueryWrapper() {
this((T) null);
}
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
- public MyLambdaQueryWrapper(T entity) {
+ public MyJoinLambdaQueryWrapper(T entity) {
super.setEntity(entity);
super.initNeed();
}
@@ -66,7 +68,7 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper entityClass) {
+ public MyJoinLambdaQueryWrapper(Class entityClass) {
super.setEntityClass(entityClass);
super.initNeed();
}
@@ -74,9 +76,9 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
- Map paramNameValuePairs, MergeSegments mergeSegments,
- SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
+ MyJoinLambdaQueryWrapper(T entity, Class entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
+ Map paramNameValuePairs, MergeSegments mergeSegments,
+ SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) {
super.setEntity(entity);
super.setEntityClass(entityClass);
this.paramNameSeq = paramNameSeq;
@@ -94,7 +96,7 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper MyLambdaQueryWrapper select(SFunction... columns) {
+ public final MyJoinLambdaQueryWrapper select(SFunction... columns) {
if (ArrayUtils.isNotEmpty(columns)) {
for (SFunction s : columns) {
Class clazz = MyLambdaUtils.getEntityClass(s);
@@ -106,7 +108,7 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper MyLambdaQueryWrapper select(Class entityClass, Predicate predicate) {
+ public MyJoinLambdaQueryWrapper select(Class entityClass, Predicate predicate) {
TableInfo info = TableInfoHelper.getTableInfo(entityClass);
Assert.notNull(info, "table can not be find");
info.getFieldList().stream().filter(predicate).collect(Collectors.toList()).forEach(
@@ -115,7 +117,7 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper MyLambdaQueryWrapper selectAs(SFunction columns, SFunction alias) {
+ public final MyJoinLambdaQueryWrapper selectAs(SFunction columns, SFunction alias) {
Class clazz = MyLambdaUtils.getEntityClass(columns);
TableInfo info = TableInfoHelper.getTableInfo(clazz);
Assert.notNull(info, "table can not be find for lambda");
@@ -123,7 +125,7 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper selectAll(Class> clazz) {
+ public final MyJoinLambdaQueryWrapper selectAll(Class> clazz) {
TableInfo info = TableInfoHelper.getTableInfo(clazz);
Assert.notNull(info, "table can not be find -> %s", clazz);
selectColumns.add(new SelectColumn(clazz, info.getTableName(), info.getKeyColumn(), null));
@@ -158,8 +160,8 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper故 sqlSelect 不向下传递
*/
@Override
- protected MyLambdaQueryWrapper instance() {
- return new MyLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
+ protected MyJoinLambdaQueryWrapper instance() {
+ return new MyJoinLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString());
}
@@ -170,7 +172,7 @@ public class MyLambdaQueryWrapper extends MyAbstractLambdaWrapper MyLambdaQueryWrapper join(String keyWord, boolean condition, Class clazz, SFunction left, SFunction right) {
+ public MyJoinLambdaQueryWrapper join(String keyWord, boolean condition, Class clazz, SFunction left, SFunction right) {
if (condition) {
TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz);
TableInfo rightInfo = TableInfoHelper.getTableInfo(MyLambdaUtils.getEntityClass(right));