Mysql 根据配置,如何使用jOOQ处理多个数据库引擎

Mysql 根据配置,如何使用jOOQ处理多个数据库引擎,mysql,oracle,postgresql,jooq,Mysql,Oracle,Postgresql,Jooq,我是一个经验丰富、快乐的jOOQ用户 我现在正在从事一个需要支持多个数据库引擎的项目(至少是PostgreSQL、MySQL、Oracle) 我们需要一些低级别的东西来控制我们的查询。JPA/Hibernate对我们来说太高了 我知道jOOQ使用元模型,而元模型是从数据库模式生成的 有没有办法针对不同的数据库引擎重用相同的jOOQ查询定义(除了引擎特定的差异外,使用相同的模式) 如果我们需要在必要时重新编译java类,则可以。编译时配置对我们来说很好。jOOQ就是为此而设计的。你需要做这些事情:

我是一个经验丰富、快乐的jOOQ用户

我现在正在从事一个需要支持多个数据库引擎的项目(至少是PostgreSQL、MySQL、Oracle)

我们需要一些低级别的东西来控制我们的查询。JPA/Hibernate对我们来说太高了

我知道jOOQ使用元模型,而元模型是从数据库模式生成的

有没有办法针对不同的数据库引擎重用相同的jOOQ查询定义(除了引擎特定的差异外,使用相同的模式)


如果我们需要在必要时重新编译java类,则可以。编译时配置对我们来说很好。

jOOQ就是为此而设计的。你需要做这些事情:

  • 根据您的JDBC连接,准备就绪。这是最简单的部分。该
    配置将自动为所有jOOQ查询生成特定于供应商的SQL。这可以在运行时完成。不需要任何编译时调整
  • 确保您的表/列始终使用相同的大小写,用于不区分大小写的行为(取决于您的MySQL配置,这可能不够,)。然后,您可以在所有其他方言上重复使用从任何数据库方言生成的代码
  • 确保只使用带有
    @Support({MYSQL,ORACLE,POSTGRES})
    注释的jooqapi。例如,不能使用,因为它不支持MySQL,但可以使用,因为所有3种目标方言都存在
  • 我们也越来越多地在jOOQ手册中添加方言特定信息,例如:

    --ASE、HSQLDB、SQLDATAWAREHOUSE、SQLSERVER、SYBASE
    (1*CAST(功率(2,4)为整数))
    --AURORA_MYSQL、AURORA_POSTGRES、COCKROACHDB、CUBRID、MARIADB、MEMSQL、MYSQL、POSTGRES、SQLITE、VERTICA
    (1