!159 fix: 用户 QueryWrapper 返回 null 值时,不进行属性查询。

Merge pull request !159 from 王帅/main
This commit is contained in:
Michael Yang 2023-07-20 04:00:41 +00:00 committed by Gitee
commit 0188bd2c1c
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 17 additions and 6 deletions

View File

@ -39,13 +39,25 @@ public class FieldQueryManager {
public static void queryFields(BaseMapper<?> mapper, Collection<?> entities, Map<String, FieldQuery> fieldQueryMap) {
for (Object entity : entities) {
if (entity == null) {
continue;
}
fieldQueryMap.forEach((key, fieldQuery) -> {
//不是当前类的内容
// 不是当前类的内容
if (!key.startsWith(entity.getClass().getName() + "#")) {
return;
}
@SuppressWarnings("unchecked")
QueryWrapper queryWrapper = fieldQuery.getQueryBuilder().build(entity);
// QueryWrapper null 值时不进行属性查询
if (queryWrapper == null) {
return;
}
Class<?> filedType = fieldQuery.getFieldWrapper().getFieldType();
Object value;
@ -73,9 +85,7 @@ public class FieldQueryManager {
Class<?> componentType = filedType.getComponentType();
List<?> objects = mapper.selectListByQueryAs(queryWrapper, componentType);
value = getArrayValue(componentType, objects);
}
// 实体类
else {
} else {
value = mapper.selectOneByQueryAs(queryWrapper, filedType);
// 循环查询嵌套类
if (!fieldQuery.isPrevent()) {

View File

@ -157,11 +157,12 @@ class UserMapperTest {
.where(USER_ROLE.USER_ID.eq(userInfo.getUserId()))
),
c -> c.field(UserInfo::getOrderInfoList).queryWrapper(userInfo ->
QueryWrapper.create()
/*QueryWrapper.create()
.select()
.from(ORDER.as("o"))
.leftJoin(USER_ORDER).as("uo").on(USER_ORDER.ORDER_ID.eq(ORDER.ORDER_ID))
.where(USER_ORDER.USER_ID.eq(userInfo.getUserId()))
.where(USER_ORDER.USER_ID.eq(userInfo.getUserId()))*/
null
),
c -> c.nestedField(OrderInfo::getGoodList).prevent().queryWrapper(orderInfo ->
QueryWrapper.create()