Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Micro JOOQ

提供业务层面的JOOQ封装

使用

<dependency>
    <groupId>com.jiangtj.micro</groupId>
    <artifactId>micro-sql-jooq</artifactId>
    <version>${last-version}</version>
</dependency>

PageUtils

分页查询

fluent api

PageUtils.selectFrom(create, ADMIN_USER)
    .conditions(condition(new AdminUserRecord(user)))
    .pageable(pageable)
    .fetchPage(AdminUser.class)

如果你希望修改查询内容

PageUtils.select(create, field("val1"), field("val2") ...)
    .from(ADMIN_USER)
    .conditions(condition(new AdminUserRecord(user)))
    .pageable(pageable)
    .fetchPage(AdminUser.class)

分别查询列表与总数

Condition condition = ...;
PageUtils.selectLimitList(create.select(table).from(table), pageable, condition);
PageUtils.selectCount(create.selectCount().from(table), condition);

响应式

首先你需要先添加一个DSLContext配置

@Bean
public DSLContext dslContext(ConnectionFactory connectionFactory) {
    return DSL.using(connectionFactory);
}

之后,使用 subscribe() 获取并转换值,下面是一个例子

public Mono<Page<AdminUser>> fetchPage() {
    return PageUtils.selectFrom(create, ADMIN_USER)
        .conditions(condition(new AdminUserRecord(user)))
        .pageable(pageable)
        .subscribe(Flux::from, Mono::from)
        .map(PageReactiveUtils.toPage(AdminUser.class));
}

GenerateHelper

帮助生成JOOQ代码的工具类,在程序中控制JOOQ代码生成比maven插件有更多的自定义空间,尤其是当项目中已经有了数据库链接配置,那么我们需要做的只是读取配置,转换成我们需要的类,这个工具类就是做这些杂事的

@SpringBootTest
public class GenerateTest {

    @Resource
    DataSourceProperties properties;

    @Test
    public void generate() throws Exception {
        GenerateHelper.init(properties);
        GenerationTool.generate(new Configuration()
            .withJdbc(GenerateHelper.getJdbc())
            .withGenerator(new Generator()
                    .withDatabase(GenerateHelper.getDatabase(".*"))
                    .withTarget(GenerateHelper.getTarget("com.jiangtj.platform.system.jooq"))
                    .withGenerate(new Generate()
                            .withPojos(true)
                            .withPojosAsJavaRecordClasses(true)
                            .withValidationAnnotations(true)
                            .withDaos(true))));
    }

}
  • GenerateHelper.init(properties) 添加 spring boot 的数据源配置
  • GenerateHelper.getJdbc() 获取 jdbc 配置
  • GenerateHelper.getDatabase(tableNamePattern) 获取数据库配置
  • GenerateHelper.getTarget(packageName) 获取生成位置的配置

ExtendGenerator

扩展JOOQ代码生成器,提供以下功能

  • 为表定义提供获取pojo类型(默认false)
  • 为dao生成类提供fetchPage方法(默认true)
@SpringBootTest
public class GenerateTest {

    @Resource
    DataSourceProperties properties;

    @Test
    public void generate() throws Exception {
        GenerateHelper.init(properties);
        GenerationTool.generate(new Configuration()
            .withJdbc(GenerateHelper.getJdbc())
            .withGenerator(new Generator()
                .withName(ExtendGenerator.class.getName())
                    .withDatabase(GenerateHelper.getDatabase(".*"))
                    .withTarget(GenerateHelper.getTarget("com.jiangtj.platform.system.jooq"))
                    .withGenerate(new Generate()
                            .withPojos(true)
                            .withPojosAsJavaRecordClasses(true)
                            .withValidationAnnotations(true)
                            .withDaos(true))));
    }

}

通过 withName 设置生成类即可,你可以通过 GenerateHelper 修改默认配置,当然也提供了 PageDAOImpl,你可以修改你的 Dao 类的继承,得到一样的结果