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}
+