移除 PARAM_TYPE

This commit is contained in:
yulichang 2022-12-14 19:14:02 +08:00
parent 2760efad8f
commit b31e271a37
5 changed files with 77 additions and 13 deletions

View File

@ -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;
}

View File

@ -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"

View File

@ -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())

View File

@ -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);
}

View File

@ -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;
}
}