因此,我目前正在学习环境中使用jooq,并希望在其他数据库中找到一些简单易用的东西。最初有一个sqlite数据库,并使用以下maven的pom配置迁移到mariadb,唯一的区别是db url、驱动程序和元
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.13.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<jdbc>
<driver>org.mariadb.jdbc.Driver</driver>
<!--suppress UnresolvedMavenProperty -->
<url>${db.url}</url>
</jdbc>
<generator>
<database>
<name>org.jooq.meta.mariadb.MariaDBDatabase</name>
<includes>.*</includes>
</database>
<target>
<packageName>org.learn_java.db.autogen</packageName>
</target>
</generator>
</configuration>
</plugin> <plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.13.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<jdbc>
<driver>com.mysql.cj.jdbc.Driver</driver>
<!--suppress UnresolvedMavenProperty -->
<url>${db.url}</url>
</jdbc>
<generator>
<database>
<name>org.jooq.meta.sqlite</name>
<includes>.*</includes>
</database>
<target>
<packageName>org.learn_java.db.autogen</packageName>
</target>
</generator>
</configuration>
</plugin>使用带有天桥的非常简单的模式
CREATE TABLE IF NOT EXISTS INFO
(
TAG_NAME varchar(30) PRIMARY KEY,
MESSAGE varchar(2000) NOT NULL
);它在不同的地方生成信息表
.tables.INFO // for sqlite
.tables.Info.INFO // for mariadb是否有一种方法来标准化它生成表类的位置?
发布于 2020-05-16 09:51:22
在SQLite中,没有模式,即只有默认模式。在其他数据库产品中,有一个模式的概念(在Server中甚至是目录),它充当数据库中和jOOQ生成的代码中数据库对象的命名空间。
您没有指定用于生成代码的模式,因此jOOQ为所有可用模式(只有一个在SQLite中,几个在MariaDB中)生成代码,从而为每个模式生成一个额外的子包。若要防止这种情况,请使用<inputSchema>
<database>
<name>org.jooq.meta.mariadb.MariaDBDatabase</name>
<!-- This is case sensitive. Use the actual case from your database -->
<inputSchema>Info</inputSchema>
<includes>.*</includes>
</database>还请参阅手册中关于模式映射的部分。。或者,您可以使用使用生成器策略覆盖生成对象的默认包名。。
https://stackoverflow.com/questions/61825995
复制相似问题