liquibase使用步骤:
1,引入依赖
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.8.9</version>
</dependency>
2,配置master.xml
存放路径:src/main/resources/liquibase/master.xml
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<!--执行的目录顺序设置-->
<includeAll path="liquibase/release1.0.0/"/>
<includeAll path="liquibase/release2.2.1/"/>
</databaseChangeLog>
3,写执行sql
存放路径:liquibase/release1.0.0/sql文件名.xml
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
<changeSet id="0001" author="zhangsan" labels="用户信息表">
<sql>
drop table if exists user_info ;
</sql>
</changeSet>
</databaseChangeLog>
注意:
- ChangeSet id使用四位数:0001,必须填写author:xxx,尽量填写label描述。谨慎使用runOnChange,runAlways等策略
- 已经执行过的ChangeSet严禁修改
- 使用时,禁止包含schema名称,禁止使用存储过程
- 所有表,列要加remarks进行注释
- 不要随便升级项目liquibase版本,特别是大版本升级。不同版本ChangeSet MD5SUM的算法不一样。
4,编写配置类,
加载master.xml,并通过@Bean 注入spring中
@Configuration
@ConditionalOnClass(DataSource.class)
public class LiquibaseConfig {
private final DataSource dataSource;
public LiquibaseConfig(DataSource dataSource) {
this.dataSource = dataSource;
}
@Bean
SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
liquibase.setChangeLog("classpath:liquibase/master.xml");
liquibase.setShouldRun(true);
return liquibase;
}
}
tips:
1,liquibase是按照顺序执行的,
2,含sql的xml尽量不要修改,不然下次启动会报错(因为会进行对sql文件校验)
5,详细用法:
英文文档 https://www.liquibase.org/get-started/quickstart
中文文档https://blog.csdn.net/u012934325/article/details/100652805