feat: 增加fluent sql测试用例

This commit is contained in:
wangyu 2024-07-13 13:53:13 +08:00
parent 3bd0119fbf
commit 764d25f15c
5 changed files with 80 additions and 12 deletions

View File

@ -33,11 +33,5 @@
<groupId>dev.flyfish.framework</groupId> <groupId>dev.flyfish.framework</groupId>
<artifactId>flyfish-data-common</artifactId> <artifactId>flyfish-data-common</artifactId>
</dependency> </dependency>
<dependency>
<groupId>group.flyfish.framework</groupId>
<artifactId>fluent-sql-core</artifactId>
<version>0.0.5</version>
<optional>true</optional>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -6,6 +6,8 @@ import dev.flyfish.framework.r2dbc.domain.TestQO;
import dev.flyfish.framework.r2dbc.repository.TestAssoRepository; import dev.flyfish.framework.r2dbc.repository.TestAssoRepository;
import dev.flyfish.framework.r2dbc.repository.TestRepository; import dev.flyfish.framework.r2dbc.repository.TestRepository;
import dev.flyfish.framework.utils.JacksonUtil; import dev.flyfish.framework.utils.JacksonUtil;
import group.flyfish.fluent.chain.SQL;
import group.flyfish.fluent.operations.R2dbcFluentSQLOperations;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test; 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.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.r2dbc.core.DatabaseClient;
import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.List; import java.util.List;
@ -29,6 +32,8 @@ public class R2DbcRepositoryTest {
private TestRepository testRepository; private TestRepository testRepository;
@Autowired @Autowired
private TestAssoRepository testAssoRepository; private TestAssoRepository testAssoRepository;
@Resource
private DatabaseClient databaseClient;
@Test @Test
public void test() { public void test() {
@ -44,14 +49,32 @@ public class R2DbcRepositoryTest {
test.setOtherId("1"); 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())); testRepository.findByNameContaining("")
List<TestDO> all = testRepository.findAll(qo).collectList().block(); .doOnNext(obj -> this.log("生成查询:{}", obj))
log.info("qo查询:{}", JacksonUtil.toPrettyJson(all)); .block();
List<TestDO> all = testRepository.findAll(qo).collectList()
.doOnNext(obj -> this.log("qo查询{}", obj))
.block();
// 修改值并保存测试 // 修改值并保存测试
all.get(0).getAsso().setName("修改后的值"); all.get(0).getAsso().setName("修改后的值");
log.info("批量保存:{}", JacksonUtil.toPrettyJson(testRepository.saveAll(all).collectList().block())); testRepository.saveAll(all).collectList()
log.info("id查询:{}", JacksonUtil.toPrettyJson(testAssoRepository.findById("1").block())); .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));
} }
} }

View File

@ -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<TestOther> others;
private List<TestChild> children;
}

View File

@ -1,13 +1,27 @@
package dev.flyfish.framework.r2dbc.repository; package dev.flyfish.framework.r2dbc.repository;
import dev.flyfish.framework.r2dbc.domain.TestDO; 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 dev.flyfish.framework.repository.DefaultReactiveRepository;
import reactor.core.publisher.Mono; 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<TestDO> { public interface TestRepository extends DefaultReactiveRepository<TestDO> {
Mono<TestDO> findByNameContaining(String like); Mono<TestDO> findByNameContaining(String like);
default Mono<TestDTO> 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();
}
} }

12
pom.xml
View File

@ -28,6 +28,7 @@
<r2dbc-mysql.version>1.1.3</r2dbc-mysql.version> <r2dbc-mysql.version>1.1.3</r2dbc-mysql.version>
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version> <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
<captcha.version>1.3.0</captcha.version> <captcha.version>1.3.0</captcha.version>
<fluent-sql.version>1.0.0</fluent-sql.version>
</properties> </properties>
<developers> <developers>
@ -96,6 +97,11 @@
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>group.flyfish.framework</groupId>
<artifactId>fluent-sql-spring-boot-starter</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
@ -146,6 +152,12 @@
<artifactId>spring-boot-starter-captcha</artifactId> <artifactId>spring-boot-starter-captcha</artifactId>
<version>${captcha.version}</version> <version>${captcha.version}</version>
</dependency> </dependency>
<dependency>
<groupId>group.flyfish.framework</groupId>
<artifactId>fluent-sql-spring-boot-starter</artifactId>
<version>${fluent-sql.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>