最近在写项目的时候,都用liquibase去管理数据库脚本,个人感觉xml不太好用,发现liquibase-groovy-dsl挺好用,找了一圈,没有发现关于它的博客,只能自己摸索,下面记录自己的配置过程。
什么是liquibase
Liquibase 是一个用于跟踪,管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据) 都保存在XML文件中,便于版本控制。
通俗点就是将你的数据库脚本转为xml记录下来,其中包含了你对数据库的改变,以及数据库的版本信息,方便数据的升级和回滚等操作。
什么是liquibase-groovy-dsl
liquibase是通过xml去记录数据库脚本,有时候看着不怎么直观,而liquibase-groovy-dsl就是遵循liquibase的语法通过使用groovy去实现xml的功能。
spring-boot 整合liquibase-groovy-dsl
注意版本号,liquibase的版本号要和liquibase-groovy-dsl的版本号有是对应关系,不能随便写,会导致启动报错。
<!--liquibase-groovy-core-->
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.3.2</version>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-groovy-dsl</artifactId>
<version>3.0.0</version>
</dependency>
配置文件
@Configuration
public class LiquibaseConfig {
@Bean
public SpringLiquibase liquibase(DataSource dataSource) {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
// liquibase.setDefaultSchema(DEFAULT_SCHEMA);
liquibase.setChangeLog("classpath:changelog.groovy");
return liquibase;
}
}
changelog.groovy 执行总入口 resources文件夹下
changelog.groovy
databaseChangeLog {
includeAll path: 'liquibase'
}
脚本放在一个目录下, includeAll path:‘目标目录’ 告诉liquibase执行那个目录下的脚本文件
application.yml
spring:
liquibase:
enabled: true
为true时,项目启动时自动就跑脚本,为false则不运行
参考项目
具体代码已经上传到git ,可以参考下面的项目
https://github.com/phyear/blog
语法使用推荐参考这位博主的文章:
https://www.jianshu.com/p/dcab2df0a105