mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
fix select子查询参数问题
This commit is contained in:
parent
fcfbef0139
commit
468a28f836
@ -12,7 +12,6 @@ import com.github.yulichang.toolkit.KtUtils;
|
|||||||
import com.github.yulichang.toolkit.KtWrapperUtils;
|
import com.github.yulichang.toolkit.KtWrapperUtils;
|
||||||
import com.github.yulichang.toolkit.TableList;
|
import com.github.yulichang.toolkit.TableList;
|
||||||
import com.github.yulichang.toolkit.support.ColumnCache;
|
import com.github.yulichang.toolkit.support.ColumnCache;
|
||||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
||||||
import com.github.yulichang.wrapper.interfaces.Chain;
|
import com.github.yulichang.wrapper.interfaces.Chain;
|
||||||
import com.github.yulichang.wrapper.interfaces.SelectWrapper;
|
import com.github.yulichang.wrapper.interfaces.SelectWrapper;
|
||||||
import com.github.yulichang.wrapper.resultmap.Label;
|
import com.github.yulichang.wrapper.resultmap.Label;
|
||||||
@ -218,8 +217,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
|
|||||||
wrapper.subTableAlias = st;
|
wrapper.subTableAlias = st;
|
||||||
consumer.accept(wrapper);
|
consumer.accept(wrapper);
|
||||||
addCustomWrapper(wrapper);
|
addCustomWrapper(wrapper);
|
||||||
String sql = KtWrapperUtils.buildSubSqlByWrapper(clazz, wrapper, alias.getName());
|
this.selectColumns.add(new SelectSub(() -> KtWrapperUtils.buildSubSqlByWrapper(clazz, wrapper, alias.getName()), hasAlias, this.alias));
|
||||||
this.selectColumns.add(new SelectString(sql, hasAlias, this.alias));
|
|
||||||
return typedThis;
|
return typedThis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,8 +217,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
|||||||
wrapper.subTableAlias = st;
|
wrapper.subTableAlias = st;
|
||||||
consumer.accept(wrapper);
|
consumer.accept(wrapper);
|
||||||
addCustomWrapper(wrapper);
|
addCustomWrapper(wrapper);
|
||||||
String sql = WrapperUtils.buildSubSqlByWrapper(clazz, wrapper, LambdaUtils.getName(alias));
|
this.selectColumns.add(new SelectSub(() -> WrapperUtils.buildSubSqlByWrapper(clazz, wrapper, LambdaUtils.getName(alias)), hasAlias, this.alias));
|
||||||
this.selectColumns.add(new SelectString(sql, hasAlias, this.alias));
|
|
||||||
return typedThis;
|
return typedThis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,125 @@
|
|||||||
|
package com.github.yulichang.wrapper.segments;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||||
|
import com.github.yulichang.wrapper.enums.BaseFuncEnum;
|
||||||
|
import org.apache.ibatis.type.TypeHandler;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子查询列
|
||||||
|
*
|
||||||
|
* @author yulichang
|
||||||
|
* @since 1.4.7
|
||||||
|
*/
|
||||||
|
public class SelectSub implements Select {
|
||||||
|
|
||||||
|
private final Supplier<String> column;
|
||||||
|
|
||||||
|
private final boolean hasTableAlias;
|
||||||
|
|
||||||
|
private final String tableAlias;
|
||||||
|
|
||||||
|
public SelectSub(Supplier<String> column, boolean hasTableAlias, String tableAlias) {
|
||||||
|
this.column = column;
|
||||||
|
this.hasTableAlias = hasTableAlias;
|
||||||
|
this.tableAlias = tableAlias;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<?> getClazz() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer getIndex() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isHasTableAlias() {
|
||||||
|
return this.hasTableAlias;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTableAlias() {
|
||||||
|
return this.tableAlias;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPk() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getColumn() {
|
||||||
|
return Objects.isNull(column) ? StringPool.EMPTY : column.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<?> getColumnType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTagColumn() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getColumProperty() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasTypeHandle() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TypeHandler<?> getTypeHandle() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isHasAlias() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAlias() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableFieldInfo getTableFieldInfo() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFunc() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SelectFunc.Arg[] getArgs() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseFuncEnum getFunc() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLabel() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isStr() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -1047,10 +1047,10 @@ class LambdaWrapperTest {
|
|||||||
.le(UserDO::getId, 100);
|
.le(UserDO::getId, 100);
|
||||||
wrapper.list();
|
wrapper.list();
|
||||||
|
|
||||||
ThreadLocalUtils.set("SELECT ( SELECT st.id FROM address st WHERE st.del=false AND (st.id = t.id) limit 1 ) AS id FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del=false AND t1.del=false AND (t.id <= ?)");
|
ThreadLocalUtils.set("SELECT ( SELECT st.id FROM area st WHERE st.del=false AND (st.id = t1.id) limit 1 ) AS id FROM `user` t LEFT JOIN address t1 ON (t1.user_id = t.id) WHERE t.del=false AND t1.del=false AND (t.id <= ?)");
|
||||||
MPJLambdaWrapper<UserDO> wrapper1 = JoinWrappers.lambda(UserDO.class)
|
MPJLambdaWrapper<UserDO> wrapper1 = JoinWrappers.lambda(UserDO.class)
|
||||||
.selectSub(AddressDO.class, w -> w.select(AddressDO::getId)
|
.selectSub(AreaDO.class, w -> w.select(AreaDO::getId)
|
||||||
.eq(AddressDO::getId, UserDO::getId)
|
.eq(AreaDO::getId, AddressDO::getId)
|
||||||
.last("limit 1"), UserDO::getId)
|
.last("limit 1"), UserDO::getId)
|
||||||
.leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId)
|
.leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId)
|
||||||
.le(UserDO::getId, 100);
|
.le(UserDO::getId, 100);
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user