当春季申请开始时,我正在激活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>
现在我想要的是我想要执行相同的changeSet但是 不同的表名是否可以传递表名 liquibase作为春天的争论?还有其他吗? 实现同样的情况?
我正在使用spring hibernate应用程序的一个模块 必须生成相同的sql架构结构,但具有不同的表 根据用户要求在运行时命名,如果不可能的话 通过liquibase然后我怎么能实现这种情况任何人 请帮我设计一下这个模块的架构?
答案 0 :(得分:1)
您需要在变更集中使用可替换参数,然后在部署变更集时设置这些参数。您的变更集可能如下所示:
<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>
然后在运行liquibase USER_TABLE_NAME
命令时需要设置update
的值,该命令在应用程序启动时运行。