我正在尝试学习liquibase。但我无法在样本中应用步骤。您能否一步一步地告诉我如何将表或列添加到我的数据库并查看更改?
我的项目是一个Spring MVC项目,我使用Maven,Hibernate,PostgreSQL,我以编程方式更改数据库。
答案 0 :(得分:1)
你需要liquibase和hibernate jar。假设您有一个包含Id,Name,Gender属性的pojo类person
。创建这些属性的getter和setter。
您需要创建liquibase文件(db-changelog.xml)
例如:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
<changeSet author="rover" id="123456789-1">
<createTable tableName="PERSON">
<column autoIncrement="true" name="PERSON_ID" type="BIGINT">
<constraints nullable="false" primaryKey="true" />
</column>
<column name="NAME" type="VARCHAR(255)" />
<column name="GENDER" type="VARCHAR(2)" />
</createTable>
</changeSet>
</databaseChangeLog>
别忘了在你的bean中添加liquibase bean
<bean id="LiquibaseUpdater" class="liquibase.integration.spring.SpringLiquibase">
<property name="dataSource" ref="dataSource" />
<property name="changeLog" value="classpath:db-changelog.xml" />
</bean>
您还需要添加spring / hibernate bean。
答案 1 :(得分:0)
在pom.xml中添加如下maven依赖,
<!-- https://mvnrepository.com/artifact/org.liquibase/liquibase-core -->
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>2.0.3</version>
</dependency>
将以下 liquibase bean 添加到 applicationcontext.xml
<bean id="LiquibaseUpdater" class="liquibase.integration.spring.SpringLiquibase">
<property name="dataSource" ref="dataSource" />
<property name="changeLog" value="classpath:db-changelog.xml" />
</bean>
在类路径中添加db-changelog.xml, 例如:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
<changeSet author="John" id="add-column" onValidationFail="MARK_RAN" failOnError="false">
<preConditions onFail="MARK_RAN">
<or>
<not>
<columnExists tableName="TABLENAME" columnName="NEWCOLUMN"/>
</not>
</or>
</preConditions>
<addColumn tableName="TABLENAME">
<column name="NEWCOLUMN" type="VARCHAR(50)"/>
</addColumn>
</changeSet>