From 5e410ea64966ccfa0d7aae27dc7e06d935362664 Mon Sep 17 00:00:00 2001 From: luxx Date: Sun, 6 Aug 2023 19:32:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91OneToOn?= =?UTF-8?q?e=E9=83=A8=E5=88=86=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E5=B9=B6=E6=8F=90issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/mybatisplus/OneToOneTest.java | 97 +++++++++++++++---- 1 file changed, 79 insertions(+), 18 deletions(-) diff --git a/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java b/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java index 011fb2de..196e3165 100644 --- a/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java +++ b/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java @@ -33,22 +33,83 @@ import java.util.Map; @MybatisPlusTest class OneToOneTest { + private final List USER_IDS = Arrays.asList(1L, 2L, 3L, 4L, 5L); + + @Test + void testOfEq(){ + Map idUserMap = OneToOne.of(UserInfo::getId).eq(1L).query(); + Assertions.assertEquals(1, idUserMap.size()); + + idUserMap = OneToOne.of(UserInfo::getId).eq(1L).eq(2L).query(); + Assertions.assertEquals(0, idUserMap.size()); + } + + @Test + void testOfValue(){ + Map idUserMap = OneToOne.of(UserInfo::getId).value(UserInfo::getName).query(); + Assertions.assertEquals(5, idUserMap.size()); + } + + @Test + void testOfIn(){ + Map idUserMap = OneToOne.of(UserInfo::getId).in(USER_IDS).query(); + Map userIdNameMap = OneToOne.of(UserInfo::getId).in(USER_IDS).value(UserInfo::getName).query(); + Assertions.assertEquals(5, idUserMap.size()); + Assertions.assertEquals(5, userIdNameMap.size()); + } + + @Test + void testOfConditionLe(){ + Map userMap = OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .condition(w -> w.le(UserInfo::getAge, 21)) + .query(); + Assertions.assertEquals(3, userMap.size()); + + userMap = OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .condition(w -> w.le(UserInfo::getAge, "21")) + .query(); + Assertions.assertEquals(3, userMap.size()); + } + + @Test + void testOfConditionSelect(){ + //TODO 错误 + Map userMap = OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .condition(w -> w.select(UserInfo::getAge)) + .query(); + userMap.forEach((k,v) -> System.out.println("userMap = " + k + "::" + v)); + Assertions.assertEquals(1, userMap.size()); + } + + @Test + void testOfConditionOrderBy(){ + //TODO 错误 + Map userMap = OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .condition(w -> w.orderBy(true,true,UserInfo::getAge)) + .query(); + userMap.forEach((k,v) -> System.out.println("userMap = " + k + "::" + v)); + Assertions.assertEquals(5, userMap.size()); + } + @Test void testQuery() { - List userIds = Arrays.asList(1L, 2L, 3L, 4L, 5L); - Map idUserMap = OneToOne.of(UserInfo::getId).in(userIds).query(); + Map idUserMap = OneToOne.of(UserInfo::getId).in(USER_IDS).query(); Assertions.assertEquals(5, idUserMap.size()); Map userIdNameMap = - OneToOne.of(UserInfo::getId).in(userIds).value(UserInfo::getName).query(); + OneToOne.of(UserInfo::getId).in(USER_IDS).value(UserInfo::getName).query(); Assertions.assertEquals(5, userIdNameMap.size()); userIdNameMap = - OneToOne.of(UserInfo::getId) - .in(userIds) - .value(UserInfo::getName) - .condition(w -> w.le(UserInfo::getAge, 22)) - .query(); + OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .value(UserInfo::getName) + .condition(w -> w.le(UserInfo::getAge, 22)) + .query(); Assertions.assertEquals(3, userIdNameMap.size()); idUserMap = OneToOne.of(UserInfo::getId).eq(1L).query(); @@ -58,19 +119,19 @@ class OneToOneTest { Assertions.assertEquals(1, userIdNameMap.size()); userIdNameMap = - OneToOne.of(UserInfo::getId) - .eq(1L) - .value(UserInfo::getName) - .condition(w -> w.le(UserInfo::getAge, 22)) - .query(); + OneToOne.of(UserInfo::getId) + .eq(1L) + .value(UserInfo::getName) + .condition(w -> w.le(UserInfo::getAge, 22)) + .query(); Assertions.assertEquals(1, userIdNameMap.size()); Map query = - OneToOne.of(UserInfo::getId) - .in(userIds) - .condition(w -> w.select(UserInfo::getId, UserInfo::getName)) - .value(userInfo -> userInfo.getName() != null && userInfo.getName().contains("a")) - .query(); + OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .condition(w -> w.select(UserInfo::getId, UserInfo::getName)) + .value(userInfo -> userInfo.getName() != null && userInfo.getName().contains("a")) + .query(); Assertions.assertEquals(2, query.values().stream().filter(Boolean::booleanValue).count()); } } -- Gitee From 3b298c2296c119faf8a9f4368039fc2b22fa81d6 Mon Sep 17 00:00:00 2001 From: luxx Date: Sun, 6 Aug 2023 19:43:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91OneToOn?= =?UTF-8?q?e=E6=8E=92=E5=BA=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stream/plugin/mybatisplus/OneToOne.java | 17 +++++++++++++++++ .../stream/plugin/mybatisplus/OneToOneTest.java | 14 ++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/stream-plugin/stream-plugin-mybatis-plus/src/main/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOne.java b/stream-plugin/stream-plugin-mybatis-plus/src/main/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOne.java index 2686760a..b5c692e5 100644 --- a/stream-plugin/stream-plugin-mybatis-plus/src/main/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOne.java +++ b/stream-plugin/stream-plugin-mybatis-plus/src/main/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOne.java @@ -22,6 +22,7 @@ import org.dromara.streamquery.stream.core.stream.Steam; import java.io.Serializable; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.function.IntFunction; @@ -79,6 +80,22 @@ public class OneToOne, V> return query(HashMap::new); } + /** + * query order + * @return a {@link java.util.LinkedHashMap} object + */ + public Map queryLinked() { + return query(LinkedHashMap::new); + } + + /** + * query order + * @return a {@link java.util.LinkedHashMap} object + */ + public Map queryL() { + return queryLinked(); + } + /** * query. * diff --git a/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java b/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java index 196e3165..602fcb59 100644 --- a/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java +++ b/stream-plugin/stream-plugin-mybatis-plus/src/test/java/org/dromara/streamquery/stream/plugin/mybatisplus/OneToOneTest.java @@ -95,6 +95,20 @@ class OneToOneTest { Assertions.assertEquals(5, userMap.size()); } + /** + * 使用LinkedHashMap解决排序问题 + */ + @Test + void testOfConditionOrderByLinked(){ + //TODO 错误 + Map userMap = OneToOne.of(UserInfo::getId) + .in(USER_IDS) + .condition(w -> w.orderBy(true,true,UserInfo::getAge)) + .queryL(); + userMap.forEach((k,v) -> System.out.println("userMap = " + k + "::" + v)); + Assertions.assertEquals(5, userMap.size()); + } + @Test void testQuery() { Map idUserMap = OneToOne.of(UserInfo::getId).in(USER_IDS).query(); -- Gitee