diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/field/FieldQueryManager.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/field/FieldQueryManager.java index 234ca296..cbcc3685 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/field/FieldQueryManager.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/field/FieldQueryManager.java @@ -39,13 +39,25 @@ public class FieldQueryManager { public static void queryFields(BaseMapper mapper, Collection entities, Map 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()) { diff --git a/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java b/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java index 12efd11c..43b3e340 100644 --- a/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java +++ b/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/mapper/UserMapperTest.java @@ -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()