mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
移除 PARAM_TYPE
This commit is contained in:
parent
2760efad8f
commit
b31e271a37
@ -270,7 +270,7 @@ public class MPJQueryWrapper<T> extends AbstractWrapper<T, String, MPJQueryWrapp
|
||||
@Override
|
||||
public MPJQueryWrapper<T> join(String keyWord, boolean condition, String joinSql) {
|
||||
if (condition) {
|
||||
from.setStringValue(from.getStringValue() + keyWord + joinSql);
|
||||
from.setStringValue(from.getStringValue() + StringPool.EMPTY + keyWord + StringPool.EMPTY + joinSql);
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
@ -33,19 +33,19 @@ public interface Constant {
|
||||
String LEFT_JOIN = StringPool.SPACE + LEFT + StringPool.SPACE + JOIN + StringPool.SPACE;
|
||||
|
||||
/**
|
||||
* " RIGHT JOIN "
|
||||
* "RIGHT JOIN"
|
||||
*/
|
||||
String RIGHT_JOIN = StringPool.SPACE + RIGHT + StringPool.SPACE + JOIN + StringPool.SPACE;
|
||||
String RIGHT_JOIN = RIGHT + StringPool.SPACE + JOIN;
|
||||
|
||||
/**
|
||||
* " INNER JOIN "
|
||||
* "INNER JOIN"
|
||||
*/
|
||||
String INNER_JOIN = StringPool.SPACE + INNER + StringPool.SPACE + JOIN + StringPool.SPACE;
|
||||
String INNER_JOIN = INNER + StringPool.SPACE + JOIN;
|
||||
|
||||
/**
|
||||
* " FULL JOIN "
|
||||
* "FULL JOIN"
|
||||
*/
|
||||
String FULL_JOIN = StringPool.SPACE + FULL + StringPool.SPACE + JOIN + StringPool.SPACE;
|
||||
String FULL_JOIN = FULL + StringPool.SPACE + JOIN;
|
||||
|
||||
/**
|
||||
* " t"
|
||||
|
@ -191,7 +191,9 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
||||
StringBuilder value = new StringBuilder();
|
||||
for (MPJLambdaWrapper<?> wrapper : onWrappers) {
|
||||
String tableName = TableInfoHelper.getTableInfo(wrapper.getJoinClass()).getTableName();
|
||||
value.append(wrapper.getKeyWord())
|
||||
value.append(StringPool.SPACE)
|
||||
.append(wrapper.getKeyWord())
|
||||
.append(StringPool.SPACE)
|
||||
.append(tableName)
|
||||
.append(Constant.SPACE_TABLE_ALIAS)
|
||||
.append(tableList.get(wrapper.getJoinClass(), wrapper.getIndex()).getIndex())
|
||||
|
@ -205,16 +205,66 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity> {
|
||||
return join(Constant.FULL_JOIN, clazz, function, ext);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* 调用此方法 keyword 前后需要带空格 比如 " LEFT JOIN " " RIGHT JOIN "
|
||||
* <p>
|
||||
* 查询基类 可以直接调用此方法实现以上所有功能
|
||||
*
|
||||
* @param keyWord 连表关键字
|
||||
* @param clazz 连表实体类
|
||||
* @param function 关联条件
|
||||
* @param ext 扩展 用于关联表的 select 和 where
|
||||
* @param keyWord 连表关键字
|
||||
* @param clazz 连表实体类
|
||||
* @param left 关联条件
|
||||
* @param right 扩展 用于关联表的 select 和 where
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, Class<T> clazz, SFunction<T, ?> left, SFunction<X, ?> right) {
|
||||
return join(keyWord, clazz, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
*
|
||||
* @param left 条件
|
||||
* @param right 条件
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, SFunction<T, ?> left, SFunction<X, ?> right) {
|
||||
return join(keyWord, LambdaUtils.getEntityClass(left), on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* <p>
|
||||
* 例 leftJoin(UserDO.class, on -> on.eq(UserDO::getId,UserAddressDO::getUserId).le().gt()...)
|
||||
*
|
||||
* @param clazz 关联实体类
|
||||
* @param function 条件
|
||||
*/
|
||||
default <T> Children join(String keyWord, Class<T> clazz, WrapperFunction<Entity> function) {
|
||||
return join(keyWord, clazz, function, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
*
|
||||
* @param clazz 关联的实体类
|
||||
* @param left 条件
|
||||
* @param right 条件
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, Class<T> clazz, SFunction<T, ?> left, SFunction<X, ?> right, WrapperFunction<Entity> ext) {
|
||||
return join(keyWord, clazz, on -> on.eq(left, right), ext);
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
*
|
||||
* @param left 条件
|
||||
* @param right 条件
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, SFunction<T, ?> left, SFunction<X, ?> right, WrapperFunction<Entity> ext) {
|
||||
return join(keyWord, LambdaUtils.getEntityClass(left), on -> on.eq(left, right), ext);
|
||||
}
|
||||
|
||||
/**
|
||||
* 内部使用, 不建议直接调用
|
||||
*/
|
||||
<T> Children join(String keyWord, Class<T> clazz, WrapperFunction<Entity> function, WrapperFunction<Entity> ext);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.github.yulichang.test.join;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.test.join.dto.AddressDTO;
|
||||
@ -264,4 +265,15 @@ class LambdaWrapperTest {
|
||||
assert list.get(0).get("ADDRESS") != null;
|
||||
list.forEach(System.out::println);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关联查询返回map
|
||||
*/
|
||||
@Test
|
||||
void testMP() {
|
||||
List<UserDO> dos = userMapper.selectList(new LambdaQueryWrapper<UserDO>()
|
||||
.gt(UserDO::getId, 3)
|
||||
.lt(UserDO::getId, 8));
|
||||
assert dos.size() == 4;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user