首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为不同的数据库生成不同的文件名

为不同的数据库生成不同的文件名
EN

Stack Overflow用户
提问于 2020-05-15 18:26:21
回答 1查看 63关注 0票数 1

因此,我目前正在学习环境中使用jooq,并希望在其他数据库中找到一些简单易用的东西。最初有一个sqlite数据库,并使用以下maven的pom配置迁移到mariadb,唯一的区别是db url、驱动程序和元

代码语言:javascript
复制
            <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>
代码语言:javascript
复制
            <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>

使用带有天桥的非常简单的模式

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS INFO
(
   TAG_NAME varchar(30) PRIMARY KEY,
   MESSAGE varchar(2000) NOT NULL
);

它在不同的地方生成信息表

代码语言:javascript
复制
.tables.INFO // for sqlite
.tables.Info.INFO // for mariadb

是否有一种方法来标准化它生成表类的位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-16 09:51:22

在SQLite中,没有模式,即只有默认模式。在其他数据库产品中,有一个模式的概念(在Server中甚至是目录),它充当数据库中和jOOQ生成的代码中数据库对象的命名空间。

您没有指定用于生成代码的模式,因此jOOQ为所有可用模式(只有一个在SQLite中,几个在MariaDB中)生成代码,从而为每个模式生成一个额外的子包。若要防止这种情况,请使用<inputSchema>

代码语言:javascript
复制
<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>

还请参阅手册中关于模式映射的部分。。或者,您可以使用使用生成器策略覆盖生成对象的默认包名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61825995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档