Java jOOQ'中的自动数据类型转换;s代码生成

Java jOOQ'中的自动数据类型转换;s代码生成,java,sql,jooq,Java,Sql,Jooq,我有以下问题: 例如: jooq是否提供了类似mybatis类型的转换机制,而不是每次需要手动转换时。例如,int被转换为Byte。长[]到UInteger等等。我不知道如何处理转换类型,可以给我一个详细的解决方案 代码生成工具如下所示: public static void main(String[] args) throws Exception { Configuration configuration = new Configuration()

我有以下问题: 例如:

jooq是否提供了类似mybatis类型的转换机制,而不是每次需要手动转换时。例如,int被转换为Byte。长[]到UInteger等等。我不知道如何处理转换类型,可以给我一个详细的解决方案

代码生成工具如下所示:

public static void main(String[] args) throws Exception {
        Configuration configuration = new Configuration()
                .withJdbc(new Jdbc()
                    .withDriver("com.mysql.jdbc.Driver")
                    .withUrl("jdbc:mysql://localhost:3306/51unboxdb")
                    .withUser("root")
                    .withPassword("root")
                )
                .withGenerator(
                        new Generator()
                        .withName("org.jooq.util.JavaGenerator")
                        .withGenerate(new Generate()
                            .withPojos(true)
                            .withImmutablePojos(true)
                            .withInterfaces(true)
                            .withDaos(true)
                            .withSpringAnnotations(true)
                            .withJavaTimeTypes(true)
                        )
                        .withDatabase(new Database()
                                .withName("org.jooq.util.mysql.MySQLDatabase")
                                .withIncludes(".*")
                                .withExcludes("")
                                .withDateAsTimestamp(true)
                                .withInputSchema("51unboxdb")
                        )
                        .withTarget(new Target()
                                .withPackageName("com.chunfytseng.unbox.jooq")
                                .withDirectory("src/main/java")
                        )
                        );
            GenerationTool.generate(configuration);
    }

数据库中有许多表。当您修改表的属性,然后从新生成的代码中覆盖现有代码时,这使我非常麻烦。我可以指定更新表还是排除某些表?并不是每次构建时都会覆盖现有代码。

一般来说,至少有两种方法可以解决此问题

1.通过使用代码生成器的类型重写功能 代码生成器支持一个名为的功能,您可以指定一个与所有相关列名和/或数据类型匹配的正则表达式,在您的情况下,其生成的类型应重写为
BIGINT
(因为您希望使用
long
而不是
UInteger

。。。
.withDatabase(新数据库()
...
.使用强制类型(新强制类型()
.withName(“BIGINT”)
.withExpression((?i:.\.USER\.ID)”)
)
...
)
...
2.通过使用内置的自动转换API jOOQ的自动转换实用程序被调用。它已经涵盖了各种各样的自动类型转换,例如,如您所示的不同知名数字类型之间的转换。还有许多方便的API,例如,您可以将所需类型的类引用传递给fetch()方法,以获得此类类型的结果