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;
|
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;
|
package com.github.yulichang.wrapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
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.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
import com.github.yulichang.toolkit.Constant;
|
import com.github.yulichang.toolkit.Constant;
|
||||||
import com.github.yulichang.toolkit.LambdaUtils;
|
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>>
|
public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLambdaWrapper<T, Children>>
|
||||||
extends MPJAbstractWrapper<T, Children> {
|
extends MPJAbstractWrapper<T, Children> {
|
||||||
|
|
||||||
private Map<String, ColumnCache> columnMap = null;
|
|
||||||
private boolean initColumnMap = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联的表
|
* 关联的表
|
||||||
*/
|
*/
|
||||||
protected final Map<Class<?>, Integer> subTable = new HashMap<>();
|
protected final Map<Class<?>, Integer> subTable = new HashMap<>();
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
protected <X> String columnsToString(SFunction<X, ?>... columns) {
|
|
||||||
return columnsToString(true, columns);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected <X> String columnToString(X column) {
|
protected <X> String columnToString(X column) {
|
||||||
return columnToString((SFunction<?, ?>) column, true);
|
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
|
@Override
|
||||||
protected <X> String columnsToString(X... columns) {
|
protected <X> String columnsToString(X... columns) {
|
||||||
return Arrays.stream(columns).map(i -> columnToString((SFunction<?, ?>) i, true)).collect(joining(StringPool.COMMA));
|
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) {
|
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);
|
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) {
|
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;
|
return typedThis;
|
||||||
}
|
}
|
||||||
@ -160,7 +174,6 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
|
|||||||
return typedThis;
|
return typedThis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSqlSelect() {
|
public String getSqlSelect() {
|
||||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||||
@ -203,24 +216,18 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
|
|||||||
if (condition) {
|
if (condition) {
|
||||||
subTable.put(clazz, tableIndex);
|
subTable.put(clazz, tableIndex);
|
||||||
TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz);
|
TableInfo leftInfo = TableInfoHelper.getTableInfo(clazz);
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder(keyWord)
|
StringBuilder sb = new StringBuilder(keyWord)
|
||||||
.append(leftInfo.getTableName())
|
.append(leftInfo.getTableName())
|
||||||
.append(StringPool.SPACE)
|
.append(Constant.SPACE_TABLE_ALIAS)
|
||||||
.append(Constant.TABLE_ALIAS)
|
|
||||||
.append(tableIndex)
|
.append(tableIndex)
|
||||||
.append(StringPool.SPACE)
|
.append(Constant.ON_TABLE_ALIAS)
|
||||||
.append(Constant.ON)
|
|
||||||
.append(Constant.TABLE_ALIAS)
|
|
||||||
.append(tableIndex)
|
.append(tableIndex)
|
||||||
.append(StringPool.DOT)
|
.append(StringPool.DOT)
|
||||||
.append(LambdaUtils.getColumn(left))
|
.append(LambdaUtils.getColumn(left))
|
||||||
.append(Constant.EQUALS)
|
.append(Constant.EQUALS_TABLE_ALIAS)
|
||||||
.append(Constant.TABLE_ALIAS)
|
|
||||||
.append(getDefault(subTable.get(LambdaUtils.getEntityClass(right))))
|
.append(getDefault(subTable.get(LambdaUtils.getEntityClass(right))))
|
||||||
.append(StringPool.DOT)
|
.append(StringPool.DOT)
|
||||||
.append(LambdaUtils.getColumn(right));
|
.append(LambdaUtils.getColumn(right));
|
||||||
|
|
||||||
tableIndex++;
|
tableIndex++;
|
||||||
if (StringUtils.isBlank(from.getStringValue())) {
|
if (StringUtils.isBlank(from.getStringValue())) {
|
||||||
from.setStringValue(sb.toString());
|
from.setStringValue(sb.toString());
|
||||||
@ -231,7 +238,6 @@ public class MPJJoinLambdaQueryWrapper<T> extends MPJAbstractLambdaWrapper<T, MP
|
|||||||
return typedThis;
|
return typedThis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* select字段
|
* select字段
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user