diff --git a/README.md b/README.md index 10e3df2..a8cacf5 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,24 @@ public class FluentSqlConfig { } ``` +## 单表查询 +单表查询可以省略结果映射,程序自动使用主表实体进行自动映射 + +```java +class Test { + + public static void main(String[] args) { + // 单表查询所有字段 + List tenants = select().from(SaasTenant.class).list(); + // 单表查询指定字段,条件 年龄小于50 + List points = select(SaasTenant::getId, SaasTenant::getName).from(SaasTenant.class) + .matching(where(SaasTenant::getAge).lt(50)) + .list(); + } +} + +``` + ## 对比直接书写SQL 本小组件主要解决的是sql的书写问题,旨在用更加优雅的方式实现sql,并且不用再担心数据库方言(SQL Dialect) diff --git a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/FluentJdbcTest.java b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/FluentJdbcTest.java index ad32677..e1ae872 100644 --- a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/FluentJdbcTest.java +++ b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/FluentJdbcTest.java @@ -7,6 +7,7 @@ import group.flyfish.fluent.operations.JdbcTemplateFluentSQLOperations; import group.flyfish.framework.cases.FluentSqlTestCase; import group.flyfish.framework.cases.JdbcTestCase; import group.flyfish.framework.cases.MybatisTestCase; +import group.flyfish.framework.cases.SingleTableTestCase; import org.junit.Test; import org.springframework.context.annotation.Bean; import org.springframework.jdbc.core.JdbcOperations; @@ -36,7 +37,7 @@ public class FluentJdbcTest { new Driver(), "jdbc:mysql://127.0.0.1:3306/epi_project?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai", "root", - "Unicom#2018" + "oI3WtMO8h%mSYARp" ); // 准备待测试用例 List> cases = Arrays.asList( @@ -46,6 +47,8 @@ public class FluentJdbcTest { ); // 执行测试 cases.forEach(TestCase::test); + // 单表测试 + new SingleTableTestCase().test(); } /** diff --git a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/FluentSqlTestCase.java b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/FluentSqlTestCase.java index d6c1d03..f4acd9b 100644 --- a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/FluentSqlTestCase.java +++ b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/FluentSqlTestCase.java @@ -33,7 +33,7 @@ public class FluentSqlTestCase extends AbstractTestCase> { // 基于构造器自动绑定注册,在实际应用中使用@Bean声明即可,可参考下面的demo new JdbcTemplateFluentSQLOperations(new JdbcTemplate(dataSource)); // 启用调试 - FluentSqlDebugger.enable(); +// FluentSqlDebugger.enable(); } /** diff --git a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/MybatisTestCase.java b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/MybatisTestCase.java index 0cb6332..b08067b 100644 --- a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/MybatisTestCase.java +++ b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/MybatisTestCase.java @@ -1,6 +1,7 @@ package group.flyfish.framework.cases; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import group.flyfish.fluent.utils.data.ObjectMappers; import group.flyfish.framework.TestCase; import group.flyfish.framework.entity.SaasQuota; import group.flyfish.framework.entity.SaasTenant; @@ -40,6 +41,7 @@ public class MybatisTestCase extends AbstractTestCase> { Configuration configuration = new Configuration(environment); configuration.addMapper(TenantContextMapper.class); TypeHandlerRegistry registry = configuration.getTypeHandlerRegistry(); + JacksonTypeHandler.setObjectMapper(ObjectMappers.shared()); registry.register(SaasTenant.DataSourceConfig.class, JacksonTypeHandler.class); registry.register(SaasQuota.class, JacksonTypeHandler.class); registry.register(SaasTenant.StorageConfig.class, JacksonTypeHandler.class); diff --git a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/SingleTableTestCase.java b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/SingleTableTestCase.java new file mode 100644 index 0000000..740bea6 --- /dev/null +++ b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/cases/SingleTableTestCase.java @@ -0,0 +1,43 @@ +package group.flyfish.framework.cases; + +import group.flyfish.framework.TestCase; +import group.flyfish.framework.entity.SaasTenant; + +import java.util.List; + +import static group.flyfish.fluent.chain.SQL.select; + +/** + * 单表测试用例 + * + * @author wangyu + */ +@TestCase.Name("单表查询测试") +public class SingleTableTestCase extends AbstractTestCase> { + + public SingleTableTestCase() { + super(null); + } + + /** + * 初始化 + * + * @throws Exception 异常 + */ + @Override + public void initialize() throws Exception { + + } + + /** + * 测试运行逻辑 + * + * @return 运行结果 + * @throws Exception 异常 + */ + @Override + public List run() throws Exception { + // 单表查询 + return select().from(SaasTenant.class).list(); + } +} diff --git a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/mapper/TenantContextMapper.xml b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/mapper/TenantContextMapper.xml index 64aacff..3932c5e 100644 --- a/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/mapper/TenantContextMapper.xml +++ b/fluent-sql-spring-jdbc/src/test/java/group/flyfish/framework/mapper/TenantContextMapper.xml @@ -10,7 +10,7 @@ - + @@ -24,7 +24,7 @@ t1.`storage` as `storage`, t1.`status` as `status`, t1.`enable` as `enable`, - t2.`quota_config` as `quotaConfig`, + t2.`quota_config` as `quota`, t2.`order_time` as `orderTime`, t2.`expire_time` as `expireTime`, t2.`order_type` as `orderType`