feat: 增加fluent sql测试用例
This commit is contained in:
parent
3bd0119fbf
commit
764d25f15c
@ -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>
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
@ -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
12
pom.xml
@ -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>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user