yulichang 2023-10-31 01:38:06 +08:00
parent 91c67c5e82
commit bb93df99b4
8 changed files with 36 additions and 31 deletions

View File

@ -64,7 +64,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* 其他
*/
/* mybatis plus 3.4.3新增 这个时wrapper的别名 不是MPJ的别名 */
protected SharedString paramAlias;
protected SharedString paramAlias = new SharedString(null);
protected SharedString lastSql;
/**
* SQL注释
@ -607,9 +607,10 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
paramNameSeq.set(0);
paramNameValuePairs.clear();
expression.clear();
lastSql.toEmpty();
sqlComment.toEmpty();
sqlFirst.toEmpty();
paramAlias.toNull();
if (Objects.nonNull(lastSql)) lastSql.toEmpty();
if (Objects.nonNull(sqlComment)) sqlComment.toEmpty();
if (Objects.nonNull(sqlFirst)) sqlFirst.toEmpty();
tableList.clear();
entityClass = null;
onWrappers.clear();
@ -658,7 +659,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
}
public String getParamAlias() {
return paramAlias == null ? Constants.WRAPPER : paramAlias.getStringValue();
return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue();
}
/**
@ -669,9 +670,8 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
*/
public Children setParamAlias(String paramAlias) {
Assert.notEmpty(paramAlias, "paramAlias can not be empty!");
Assert.isTrue(CollectionUtils.isEmpty(paramNameValuePairs), "Please call this method before working!");
Assert.isNull(this.paramAlias, "Please do not call the method repeatedly!");
this.paramAlias = new SharedString(paramAlias);
Assert.isNull(this.paramAlias.getStringValue(), "Please do not call the method repeatedly!");
this.paramAlias.setStringValue(paramAlias);
return typedThis;
}

View File

@ -125,7 +125,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
* 不建议直接 new 该实例使用 JoinWrappers.lambda(UserDO.class)
*/
KtLambdaWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments, SharedString paramAlias,
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst,
TableList tableList, Integer index, String keyWord, Class<?> joinClass, String tableName) {
super.setEntity(entity);
@ -134,6 +134,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
this.paramNameValuePairs = paramNameValuePairs;
this.expression = mergeSegments;
this.sqlSelect = sqlSelect;
this.paramAlias = paramAlias;
this.lastSql = lastSql;
this.sqlComment = sqlComment;
this.sqlFirst = sqlFirst;
@ -207,7 +208,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
@SuppressWarnings("DuplicatedCode")
public KtLambdaWrapper<T> selectSub(Class<?> clazz, String st, Consumer<KtLambdaWrapper<?>> consumer, KProperty<?> alias) {
KtLambdaWrapper<?> wrapper = new KtLambdaWrapper(null, clazz, SharedString.emptyString(), paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(),
new MergeSegments(), SharedString.emptyString(), this.paramAlias, SharedString.emptyString(), SharedString.emptyString(),
new TableList(), null, null, null, null) {
};
wrapper.tableList.setAlias(st);
@ -348,7 +349,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
@Override
protected KtLambdaWrapper<T> instance(Integer index, String keyWord, Class<?> joinClass, String tableName) {
return new KtLambdaWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(),
new MergeSegments(), SharedString.emptyString(), this.paramAlias, SharedString.emptyString(), SharedString.emptyString(),
this.tableList, index, keyWord, joinClass, tableName);
}
@ -356,7 +357,8 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
public void clear() {
super.clear();
selectDistinct = false;
sqlSelect.toNull();
sqlSelect.toEmpty();
if (Objects.nonNull(unionSql)) unionSql.toEmpty();
selectColumns.clear();
wrapperIndex = new AtomicInteger(0);
wrapperMap.clear();

View File

@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiConsumer;
import java.util.function.Function;
@ -36,7 +37,7 @@ import static java.util.stream.Collectors.joining;
*
* @author yulichang
*/
@SuppressWarnings({"DuplicatedCode", "unused", "LombokGetterMayBeUsed"})
@SuppressWarnings({"DuplicatedCode", "unused"})
public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLambdaWrapper<T, Children>>
extends MPJAbstractWrapper<T, Children> implements QueryJoin<Children, T> {
@ -455,7 +456,7 @@ public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLa
this.dynamicTableName = false;
this.tableFunc = null;
this.logicDelType = ConfigProperties.logicDelType;
this.from.toNull();
this.from.toEmpty();
this.hasAlias = false;
this.keyWord = null;
this.logicSql = true;

View File

@ -59,7 +59,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
* 其他
*/
/* mybatis plus 3.4.3新增 这个时wrapper的别名 不是MPJ的别名 */
protected SharedString paramAlias;
protected SharedString paramAlias = new SharedString(null);
protected SharedString lastSql;
/**
* SQL注释
@ -617,12 +617,13 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
@Override
public void clear() {
entity = null;
paramAlias.toNull();
paramNameSeq.set(0);
paramNameValuePairs.clear();
expression.clear();
lastSql.toEmpty();
sqlComment.toEmpty();
sqlFirst.toEmpty();
if (Objects.nonNull(lastSql)) lastSql.toEmpty();
if (Objects.nonNull(sqlComment)) sqlComment.toEmpty();
if (Objects.nonNull(sqlFirst)) sqlFirst.toEmpty();
tableList.clear();
entityClass = null;
onWrappers.clear();
@ -671,7 +672,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
}
public String getParamAlias() {
return paramAlias == null ? Constants.WRAPPER : paramAlias.getStringValue();
return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue();
}
/**
@ -682,9 +683,8 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
*/
public Children setParamAlias(String paramAlias) {
Assert.notEmpty(paramAlias, "paramAlias can not be empty!");
Assert.isTrue(CollectionUtils.isEmpty(paramNameValuePairs), "Please call this method before working!");
Assert.isNull(this.paramAlias, "Please do not call the method repeatedly!");
this.paramAlias = new SharedString(paramAlias);
Assert.isTrue(StringUtils.isBlank(this.paramAlias.getStringValue()), "Please do not call the method repeatedly!");
this.paramAlias.setStringValue(paramAlias);
return typedThis;
}

View File

@ -123,7 +123,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
* 不建议直接 new 该实例使用 JoinWrappers.lambda(UserDO.class)
*/
MPJLambdaWrapper(T entity, Class<T> entityClass, SharedString sqlSelect, AtomicInteger paramNameSeq,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments,
Map<String, Object> paramNameValuePairs, MergeSegments mergeSegments, SharedString paramAlias,
SharedString lastSql, SharedString sqlComment, SharedString sqlFirst,
TableList tableList, Integer index, String keyWord, Class<?> joinClass, String tableName) {
super.setEntity(entity);
@ -132,6 +132,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
this.paramNameValuePairs = paramNameValuePairs;
this.expression = mergeSegments;
this.sqlSelect = sqlSelect;
this.paramAlias = paramAlias;
this.lastSql = lastSql;
this.sqlComment = sqlComment;
this.sqlFirst = sqlFirst;
@ -207,7 +208,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
@SuppressWarnings("DuplicatedCode")
public <E, F> MPJLambdaWrapper<T> selectSub(Class<E> clazz, String st, Consumer<MPJLambdaWrapper<E>> consumer, SFunction<F, ?> alias) {
MPJLambdaWrapper<E> wrapper = new MPJLambdaWrapper<E>(null, clazz, SharedString.emptyString(), paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(),
new MergeSegments(), this.paramAlias, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(),
new TableList(), null, null, null, null) {
};
wrapper.tableList.setAlias(st);
@ -348,7 +349,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
@Override
protected MPJLambdaWrapper<T> instance(Integer index, String keyWord, Class<?> joinClass, String tableName) {
return new MPJLambdaWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs,
new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(),
new MergeSegments(), this.paramAlias, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(),
this.tableList, index, keyWord, joinClass, tableName);
}
@ -359,7 +360,8 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
sqlSelect.toNull();
selectColumns.clear();
wrapperIndex = new AtomicInteger(0);
wrapperMap.clear();
if (Objects.nonNull(wrapperMap)) wrapperMap.clear();
if (Objects.nonNull(unionSql)) unionSql.toEmpty();
resultMapMybatisLabel.clear();
}
}

View File

@ -1,4 +0,0 @@
package com.github.yulichang.test.join.entity;
public class UserTTT extends UserDO{
}

View File

@ -1094,11 +1094,14 @@ class LambdaWrapperTest {
.eq(UserDO::getId, 1);
MPJLambdaWrapper<UserDO> wrapper1 = JoinWrappers.lambda(UserDO.class)
.selectAll(UserDO.class)
.eq(UserDO::getName, "张三 2");
.eq(UserDO::getName, "张三 2")
.and(w -> w.eq(UserDO::getName, "张三 2"));
MPJLambdaWrapper<UserDO> wrapper2 = JoinWrappers.lambda(UserDO.class)
.selectAll(UserDO.class)
.eq(UserDO::getPid, 2);
wrapper.union(wrapper1, wrapper2);
System.out.println(wrapper.getUnionSql());
List<UserDO> list = wrapper.list();
assert list.size() == 7;

View File

@ -1146,6 +1146,7 @@ class LambdaWrapperTest {
val wrapper1: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
.selectAll(UserDO::class.java)
.eq(UserDO::name, "张三 2")
.and { a -> a.eq(UserDO::name, "张三 2") }
val wrapper2: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
.selectAll(UserDO::class.java)
.eq(UserDO::pid, 2)