diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/base/mapper/MPJRelationMapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/base/mapper/MPJRelationMapper.java index 5da191e..b14c257 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/base/mapper/MPJRelationMapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/base/mapper/MPJRelationMapper.java @@ -7,25 +7,34 @@ import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.github.yulichang.relation.Relation; -import java.util.Arrays; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.function.Function; +/** + * 注解映射Mapper 用于替代 MPJDeepMapper + * + * @author yulichang + * @since 1.4.3 + */ public interface MPJRelationMapper extends BaseMapper { + default > R selectRelation(Function function) { + return selectRelation(function, new ArrayList<>()); + } + /** * 通过注解实现单表多次查询 * * @param function BaseMapper调用方法 - * @param deep 是否深度查询 - * @param prop 属性过滤, 可以只查询需要映射的属性 + * @param list 属性过滤, 可以只查询需要映射的属性 * @see com.github.yulichang.annotation.EntityMapping * @see com.github.yulichang.annotation.FieldMapping */ @SuppressWarnings("unchecked") - default > R selectRelation(Function function, boolean deep, SFunction... prop) { + default > R selectRelation(Function function, List> list) { R r = function.apply((M) this); if (Objects.isNull(r)) { return null; @@ -42,7 +51,7 @@ public interface MPJRelationMapper extends BaseMapper { if (Object.class == t.getClass()) { return r; } - return (R) Relation.list(data, Arrays.asList(prop), deep); + return (R) Relation.list(data, list); } } if (r instanceof IPage) { @@ -55,7 +64,7 @@ public interface MPJRelationMapper extends BaseMapper { if (Object.class == t.getClass()) { return r; } - Relation.list(data.getRecords(), Arrays.asList(prop), deep); + Relation.list(data.getRecords(), list); } return r; } @@ -72,6 +81,6 @@ public interface MPJRelationMapper extends BaseMapper { return r; } T data = (T) r; - return (R) Relation.one(data, Arrays.asList(prop), deep); + return (R) Relation.one(data, list); } } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/relation/Relation.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/relation/Relation.java index 12dba27..18be5ce 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/relation/Relation.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/relation/Relation.java @@ -16,9 +16,8 @@ import java.util.stream.Collectors; @SuppressWarnings("all") public class Relation { -// private static final List EMPTY_LIST = new ArrayList<>(); - public static List list(List data, List> property, boolean deep) { + public static List list(List data, List> property) { if (CollectionUtils.isEmpty(data)) { return data; } @@ -38,12 +37,8 @@ public class Relation { data.forEach(i -> mpjBindData(i, fieldInfo, joinList)); fieldInfo.removeJoinField(joinList); if (CollectionUtils.isEmpty(joinList)) { -// continue; + continue; } -// //深度查询 -// if (deep) { -// -// } } else { data.forEach(i -> fieldInfo.fieldSet(i, new ArrayList<>())); } @@ -62,7 +57,7 @@ public class Relation { * * @param t 第一次查询结果 */ - public static T one(T t, List> property, boolean deep) { + public static T one(T t, List> property) { if (t == null) { return null; } diff --git a/mybatis-plus-join-test/test-mapping/src/test/java/com/github/yulichang/test/mapping/MappingTest.java b/mybatis-plus-join-test/test-mapping/src/test/java/com/github/yulichang/test/mapping/MappingTest.java index 7707911..8762a73 100644 --- a/mybatis-plus-join-test/test-mapping/src/test/java/com/github/yulichang/test/mapping/MappingTest.java +++ b/mybatis-plus-join-test/test-mapping/src/test/java/com/github/yulichang/test/mapping/MappingTest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; /** @@ -23,7 +24,7 @@ class MappingTest { @Test public void test() { - List dos = userMapper.selectRelation(e -> e.selectList(new QueryWrapper<>()), true); + List dos = userMapper.selectRelation(e -> e.selectList(new QueryWrapper<>()), Collections.singletonList(UserDO::getAddressId)); System.out.println(1); } @@ -32,7 +33,7 @@ class MappingTest { MPJLambdaWrapper wrapper = new MPJLambdaWrapper() .selectAll(UserDO.class) .leftJoin(AddressDO.class, AddressDO::getId, UserDO::getAddressId); - List dos = userMapper.selectRelation(e -> e.selectList(wrapper), true); + List dos = userMapper.selectRelation(e -> e.selectList(wrapper)); System.out.println(1); } }