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>
<artifactId>flyfish-data-common</artifactId>
</dependency>
<dependency>
<groupId>group.flyfish.framework</groupId>
<artifactId>fluent-sql-core</artifactId>
<version>0.0.5</version>
<optional>true</optional>
</dependency>
</dependencies>
</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.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<TestDO> all = testRepository.findAll(qo).collectList().block();
log.info("qo查询:{}", JacksonUtil.toPrettyJson(all));
testRepository.findByNameContaining("")
.doOnNext(obj -> this.log("生成查询:{}", obj))
.block();
List<TestDO> 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));
}
}

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