admin 2021-03-25 15:23:25 +08:00
parent fa2b7439f0
commit 0cb8b7cad9
3 changed files with 33 additions and 27 deletions

View File

@ -42,4 +42,18 @@ public interface Constant {
*/
String INNER_JOIN = StringPool.SPACE + INNER + StringPool.SPACE + JOIN + StringPool.SPACE;
/**
* " t"
*/
String SPACE_TABLE_ALIAS = StringPool.SPACE + Constant.TABLE_ALIAS;
/**
* " ON t"
*/
String ON_TABLE_ALIAS = Constant.ON + Constant.TABLE_ALIAS;
/**
* " = t"
*/
String EQUALS_TABLE_ALIAS = Constant.EQUALS + Constant.TABLE_ALIAS;
}

View File

@ -1,7 +1,6 @@
package com.github.yulichang.wrapper;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.toolkit.Constant;
import com.github.yulichang.toolkit.LambdaUtils;
@ -20,29 +19,16 @@ import static java.util.stream.Collectors.joining;
public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLambdaWrapper<T, Children>>
extends MPJAbstractWrapper<T, Children> {
private Map<String, ColumnCache> columnMap = null;
private boolean initColumnMap = false;
/**
* 关联的表
*/
protected final Map<Class<?>, Integer> subTable = new HashMap<>();
@SuppressWarnings("unchecked")
protected <X> String columnsToString(SFunction<X, ?>... columns) {
return columnsToString(true, columns);
}
@Override
protected <X> String columnToString(X column) {
return columnToString((SFunction<?, ?>) column, true);
}
@SuppressWarnings("unchecked")
protected <X> String columnsToString(boolean onlyColumn, SFunction<X, ?>... columns) {
return Arrays.stream(columns).map(i -> columnToString(i, onlyColumn)).collect(joining(StringPool.COMMA));
}
@Override
protected <X> String columnsToString(X... columns) {
return Arrays.stream(columns).map(i -> columnToString((SFunction<?, ?>) i, true)).collect(joining(StringPool.COMMA));

View File

@ -133,12 +133,26 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
public final <S, X> MPJJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> columns, SFunction<X, ?> alias) {
return selectAs(true, columns, LambdaUtils.getName(alias));
}
/**
* @since 1.1.3
*/
public final <S> MPJJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> columns, String alias) {
return selectAs(true, columns, alias);
}
public final <S, X> MPJJoinLambdaQueryWrapper<T> selectAs(boolean condition, SFunction<S, ?> columns, SFunction<X, ?> alias) {
public final <S, X> MPJJoinLambdaQueryWrapper<T> selectAs(boolean condition, SFunction<S, ?> columns, SFunction alias) {
return selectAs(condition, columns, LambdaUtils.getName(alias));
}
/**
* @since 1.1.3
*/
public final <S, X> MPJJoinLambdaQueryWrapper<T> selectAs(boolean condition, SFunction<S, ?> columns, String alias) {
if (condition) {
selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(columns), LambdaUtils.getColumn(columns), LambdaUtils.getName(alias)));
selectColumns.add(new SelectColumn(LambdaUtils.getEntityClass(columns), LambdaUtils.getColumn(columns), alias));
}
return typedThis;
}
@ -160,7 +174,6 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
return typedThis;
}
@Override
public String getSqlSelect() {
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
@ -203,24 +216,18 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
if (condition) {
subTable.put(clazz, tableIndex);
TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz);
StringBuilder sb = new StringBuilder(keyWord)
.append(leftInfo.getTableName())
.append(StringPool.SPACE)
.append(Constant.TABLE_ALIAS)
.append(Constant.SPACE_TABLE_ALIAS)
.append(tableIndex)
.append(StringPool.SPACE)
.append(Constant.ON)
.append(Constant.TABLE_ALIAS)
.append(Constant.ON_TABLE_ALIAS)
.append(tableIndex)
.append(StringPool.DOT)
.append(LambdaUtils.getColumn(left))
.append(Constant.EQUALS)
.append(Constant.TABLE_ALIAS)
.append(Constant.EQUALS_TABLE_ALIAS)
.append(getDefault(subTable.get(LambdaUtils.getEntityClass(right))))
.append(StringPool.DOT)
.append(LambdaUtils.getColumn(right));
tableIndex++;
if (StringUtils.isBlank(from.getStringValue())) {
from.setStringValue(sb.toString());
@ -231,7 +238,6 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
return typedThis;
}
/**
* select字段
*/