diff --git a/flyfish-data/flyfish-data-r2dbc/pom.xml b/flyfish-data/flyfish-data-r2dbc/pom.xml index 2be3f44..2a15cdd 100644 --- a/flyfish-data/flyfish-data-r2dbc/pom.xml +++ b/flyfish-data/flyfish-data-r2dbc/pom.xml @@ -33,11 +33,5 @@ dev.flyfish.framework flyfish-data-common - - group.flyfish.framework - fluent-sql-core - 0.0.5 - true - diff --git a/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/R2DbcRepositoryTest.java b/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/R2DbcRepositoryTest.java index 23788ad..fa0ad4e 100644 --- a/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/R2DbcRepositoryTest.java +++ b/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/R2DbcRepositoryTest.java @@ -6,6 +6,8 @@ import dev.flyfish.framework.r2dbc.domain.TestQO; import dev.flyfish.framework.r2dbc.repository.TestAssoRepository; import dev.flyfish.framework.r2dbc.repository.TestRepository; import dev.flyfish.framework.utils.JacksonUtil; +import group.flyfish.fluent.chain.SQL; +import group.flyfish.fluent.operations.R2dbcFluentSQLOperations; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; @@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Import; +import org.springframework.r2dbc.core.DatabaseClient; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; @@ -29,6 +32,8 @@ public class R2DbcRepositoryTest { private TestRepository testRepository; @Autowired private TestAssoRepository testAssoRepository; + @Resource + private DatabaseClient databaseClient; @Test public void test() { @@ -44,14 +49,32 @@ public class R2DbcRepositoryTest { test.setOtherId("1"); // 打印插入结果 - log.info("插入结果:{}", JacksonUtil.toPrettyJson(testRepository.insert(test).block())); + testRepository.insert(test) + .doOnNext(obj -> this.log("插入结果:{}", obj)) + .block(); // 查询生成 - log.info("生成查询:{}", JacksonUtil.toPrettyJson(testRepository.findByNameContaining("名").block())); - List all = testRepository.findAll(qo).collectList().block(); - log.info("qo查询:{}", JacksonUtil.toPrettyJson(all)); + testRepository.findByNameContaining("名") + .doOnNext(obj -> this.log("生成查询:{}", obj)) + .block(); + List all = testRepository.findAll(qo).collectList() + .doOnNext(obj -> this.log("qo查询:{}", obj)) + .block(); // 修改值并保存测试 all.get(0).getAsso().setName("修改后的值"); - log.info("批量保存:{}", JacksonUtil.toPrettyJson(testRepository.saveAll(all).collectList().block())); - log.info("id查询:{}", JacksonUtil.toPrettyJson(testAssoRepository.findById("1").block())); + testRepository.saveAll(all).collectList() + .doOnNext(obj -> this.log("批量保存:{}", obj)) + .block(); + testAssoRepository.findById("1") + .doOnNext(obj -> this.log("id查询:{}", obj)) + .block(); + // 测试fluent sql + SQL.bind(new R2dbcFluentSQLOperations(databaseClient)); + testRepository.getDTOById(100L) + .doOnNext(obj -> this.log("测试fluent:{}", obj)) + .block(); + } + + private void log(String msg, Object bean) { + log.info(msg, JacksonUtil.toPrettyJson(bean)); } } diff --git a/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/domain/TestDTO.java b/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/domain/TestDTO.java new file mode 100644 index 0000000..96ea2b7 --- /dev/null +++ b/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/domain/TestDTO.java @@ -0,0 +1,25 @@ +package dev.flyfish.framework.r2dbc.domain; + +import dev.flyfish.framework.r2dbc.domain.reference.TestAsso; +import dev.flyfish.framework.r2dbc.domain.reference.TestChild; +import dev.flyfish.framework.r2dbc.domain.reference.TestOther; +import dev.flyfish.framework.relational.mapping.Association; +import lombok.Data; +import org.springframework.data.annotation.Reference; +import org.springframework.data.relational.core.mapping.Column; + +import java.util.List; + +@Data +public class TestDTO { + + private String otherId; + + private TestAsso asso; + + private TestOther other; + + private List others; + + private List children; +} diff --git a/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/repository/TestRepository.java b/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/repository/TestRepository.java index ad74d02..0524ffd 100644 --- a/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/repository/TestRepository.java +++ b/flyfish-data/flyfish-data-r2dbc/src/test/java/dev/flyfish/framework/r2dbc/repository/TestRepository.java @@ -1,13 +1,27 @@ package dev.flyfish.framework.r2dbc.repository; import dev.flyfish.framework.r2dbc.domain.TestDO; +import dev.flyfish.framework.r2dbc.domain.TestDTO; +import dev.flyfish.framework.r2dbc.domain.reference.TestChild; import dev.flyfish.framework.repository.DefaultReactiveRepository; import reactor.core.publisher.Mono; +import static group.flyfish.fluent.chain.SQL.select; +import static group.flyfish.fluent.query.Query.where; + /** * 测试仓库 */ public interface TestRepository extends DefaultReactiveRepository { Mono findByNameContaining(String like); + + default Mono getDTOById(Long id) { + return select().from(TestDO.class) + .leftJoin(TestChild.class).on(where(TestDO::getId).eq(TestChild::getParentId)) + .matching(where(TestDO::getId).eq(id)) + .as(TestDTO.class) + .reactive() + .one(); + } } diff --git a/pom.xml b/pom.xml index 5f5d965..0d692fa 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ 1.1.3 1.5.0 1.3.0 + 1.0.0 @@ -96,6 +97,11 @@ spring-boot-starter-test test + + group.flyfish.framework + fluent-sql-spring-boot-starter + test + @@ -146,6 +152,12 @@ spring-boot-starter-captcha ${captcha.version} + + + group.flyfish.framework + fluent-sql-spring-boot-starter + ${fluent-sql.version} +