mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
This commit is contained in:
parent
fa2b7439f0
commit
0cb8b7cad9
@ -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;
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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字段
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user