是否可以将表名作为参数传递到liquibase变更集中?



春季应用开始时,我正在执行liquibase chnageset

<changeSet author="kbatra" id="1.2">
<createTable schemaName="public" tableName="table_a">
<column name="id" autoIncrement="true" type="BIGINT">
<constraints primaryKey="true" />
</column>
<column name="first_name" type="varchar(255)" />
<column name="last_name" type="varchar(255)" />
<column name="username" type="varchar(255)">
<constraints unique="true" />
</column>
<column name="password" type="varchar(1000)" />
<column name="email" type="varchar(255)" />
</createTable>
</changeSet>

现在我想要的是我想执行相同的更改集,但使用 不同的表名是否可以传递表名 液碱作为春天的论据? 还有其他的吗 实现相同的场景?

我正在研究春季冬眠应用程序的一个模块,其中我 必须生成相同的 SQL 架构结构,但具有不同的表 在运行时根据用户要求命名(如果不可能( 通过 liquibase 那么我怎么能实现这种情况,任何人都可以 请帮我设计这个模块的架构?

您需要在变更集中使用可替换参数,然后在部署变更集时设置这些参数。您的变更集可能如下所示:

<changeSet author="kbatra" id="1.2">
<createTable schemaName="public" tableName="${USER_TABLE_NAME}">
<column name="id" autoIncrement="true" type="BIGINT">
<constraints primaryKey="true" />
</column>
<column name="first_name" type="varchar(255)" />
<column name="last_name" type="varchar(255)" />
<column name="username" type="varchar(255)">
<constraints unique="true" />
</column>
<column name="password" type="varchar(1000)" />
<column name="email" type="varchar(255)" />
</createTable>
</changeSet>

然后,您需要在运行 liquibaseupdate命令时设置USER_TABLE_NAME的值,该命令在应用程序启动时运行。

最新更新