本文共 2864 字,大约阅读时间需要 9 分钟。
LiquiBase
是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其有点主要有以下:
liquibase 官方文档地址:http://www.liquibase.org/documentation/index.html
先在 pom 文件里引入依赖
org.liquibase liquibase-core
在代码中新建一个 LiquibaseConfig
类,用于配置 Liquibase
,指定配置文件的位置。
import javax.sql.DataSource;import liquibase.integration.spring.SpringLiquibase;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class LiquibaseConfig { @Bean public SpringLiquibase liquibase(DataSource dataSource) { SpringLiquibase liquibase = new SpringLiquibase(); liquibase.setDataSource(dataSource); //指定changelog的位置,这里使用的一个master文件引用其他文件的方式 liquibase.setChangeLog("classpath:liquibase/master.xml"); liquibase.setContexts("development,test,production"); liquibase.setShouldRun(true); return liquibase; }}
目录结构:
src/main/resources
下新建一个文件夹:liquibase
,用来存放跟 liquibase
相关的文件。
然后在 liquibase
文件夹下新建 master.xml
作为主文件。
includeAll
标签可以把一个文件夹下的所有 changelog 都加载进来。如果单个加载可以用 include
。
includeAll
标签里有两个属性:path
和 relativeToChangelogFile
。
Attribute | Description |
---|---|
file | Name of the file to import required |
relativeToChangelogFile | Is the file path relative to the root changelog file rather than to the classpath. Defaults to “false” since 1.9 |
path
(在 include 标签里是 file):指定要加载的文件或文件夹位置
relativeToChangelogFile
:文件位置的路径是否相对于 root changelog 是相对路径,默认 false,即相对于 classpath 是相对路径。
另在 liquibase
文件夹下新建 changelogs
文件夹用来存放 changelog。
这里新建一个 changelog-1.0.xml
如果你的项目一开始就用了 liquibase,那可以像上面这样写,把建表语句都写在 changelog 里。
如果一开始没用,后期想引入 liquibase,可以把以前的数据库导出成 sql,然后引入 sql 文件。方式如下:
直接把项目导出的数据库文件 project.sql
通过 include
标签引进来。
以上就是 SpringBoot 整合 Liquibase 的全部内容。
如果有疑问或好的建议,可以加 WX 交流:douglas1840
转载地址:http://ltvpi.baihongyu.com/