Sql server 2008 r2 如何将生成的代码限制为数据库中的表?

Sql server 2008 r2 如何将生成的代码限制为数据库中的表?,sql-server-2008-r2,jooq,codegen,Sql Server 2008 R2,Jooq,Codegen,我目前正在评估jooq。我对它很陌生。我想使用jooq访问SQL Server 2008 R2数据库。当我生成类时,codegen工具会为该服务器上所有数据库中的对象生成代码,这不是我想要的 我在配置文件中使用什么设置将工具限制为仅一个数据库?我检查了一下,结果不太明显。嗯,对于限制表,我想我可以使用和 我是否可以使用相同的标记,通过使用由三部分组成的完全限定表名[database].[schema].[table],将工具仅限于某些数据库中的对象 其他一些评论: 如果该工具允许指定每个对象类

我目前正在评估jooq。我对它很陌生。我想使用jooq访问SQL Server 2008 R2数据库。当我生成类时,codegen工具会为该服务器上所有数据库中的对象生成代码,这不是我想要的

我在配置文件中使用什么设置将工具限制为仅一个数据库?我检查了一下,结果不太明显。嗯,对于限制表,我想我可以使用

我是否可以使用相同的标记,通过使用由三部分组成的完全限定表名[database].[schema].[table],将工具仅限于某些数据库中的对象

其他一些评论:

  • 如果该工具允许指定每个对象类型的包含/排除规则(即表、视图、过程、函数等),那就太好了

  • 如果可能的话,将表/视图/过程的类放在单独的包中,而不是将它们集中在一起

  • 其中一个数据库具有架构
    \
    ,生成的代码无效。只需确保
    \
    以字符串形式生成到
    \\

感谢您对当前问题/评论的回答: 我是否可以使用相同的标记,通过使用由三部分组成的完全限定表名[database].[schema].[table],将工具仅限于某些数据库中的对象

是的,
元素同时匹配限定名和非限定名,因此您可以排除
数据库.schema.table
(去掉括号)

如果该工具允许指定每个对象类型的包含/排除规则(即表、视图、过程、函数等),那就太好了

事实上,这已经在路线图上了:

如果可能的话,将表/视图/过程的类放在单独的包中,而不是将它们集中在一起

您可以使用生成器策略覆盖当前行为:

  • (更强大)
  • (更简单)
其中一个数据库具有架构“”,生成的代码无效。只需确保以字符串形式将\生成为\即可

是的,
元素(与代码生成器配置中的许多其他元素一样)采用具有所有相关语义的Java正则表达式

更好地解决实际问题: 在JOOQ3.9中,可以在代码生成器中使用。有不同的配置方法:

只有一个输入目录(SQL Server称之为数据库的标准名称) 这是让您开始使用的最简单配置。它将在单个数据库中生成所有内容:


数据库
...
您可以进一步将生成的输出减少到该数据库中的单个模式,如下所示:


数据库
模式
...
多输入目录 在更复杂的设置中(或随着项目的增长),更合适的方法是明确列出所有目录和模式:


数据库1
数据库2
方案1
方案2
...
背景: 默认情况下,jOOQ代码生成器总是生成它所能看到的一切。有两种方法可以明确限制这一点:

  • (适用于所有对象)
  • 在jOOQ 3.8中,添加了对多个目录(在SQL Server:数据库中)的代码生成支持,而没有添加通过目录映射功能限制它们的支持。当添加目录映射()时,这在jOOQ 3.9中得到了纠正

    在此之前,唯一的解决方法是使用
    从不需要的目录中排除所有内容,这导致jOOQ 3.8代码生成器只生成空目录