SpringBoot整合liquibase及liquibase⽣成初始化脚本的⽅式⽬录
⼀. SpringBoot集成liquibase
⼆. liquibase⽣成数据库表和数据的初始化脚本
⼀. SpringBoot集成liquibase
项⽬集成liquibase作⽤
1. 对数据库表字段进⾏版本控制
2. 项⽬初始化部署时初始化数据库表和数据
①.导⼊pom依赖
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
②.配置l⽂件,指定l
spring:
liquibase:
change-log: classpath:l #指定l⽂件的位置
不同spring版本配置⽅式不⼀样
具体看源码LiquibaseProperties中配置
③.新建l⽂件⽤于中指定数据库初始化脚本的位置
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
xmlns="/xml/ns/dbchangelog"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/dbchangelog
/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
<include file="classpath:liquibase/change_log/l" relativeToChangelogFile="false"/>
<include file="classpath:liquibase/change_log/l" relativeToChangelogFile="false"/>
</databaseChangeLog>
④.将数据库表初始脚本l和数据初始脚本l放到项⽬⽬录下
脚本可以通过⼿写的⽅式或者通过liquibase⾃动⽣成;
启动项⽬如果第⼀次运⾏则会在数据库中创建表和数据
后⾯如果脚本中有新增表或者字段启动项⽬的时候也会⾃动创建⽣成
⼆. liquibase⽣成数据库表和数据的初始化脚本
liquibase有两种⽅式⽣成初始化脚本
⽅法⼀:在liquibase压缩包,使⽤原⽣的命令⾏指令来⽣成
下载liquibase压缩包,解压,将mysql连接jar包复制⼀份到此⽬录下
进⼊解压⽬录执⾏如下执⾏
根据数据库⽣成表结构⽂件
./liquibase --sql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=./l --url="jdbc:mysql://192.168.0.162:3306/hello_world" --username=root --password=123456 --diffTypes=data generateChangeLog 根据数据库⽣成初始数据⽂件
./liquibase --sql.cj.jdbc.Driver --classpath=mysql-connector-java-8.0.17.jar --changeLogFile=./l --url="jdbc:mysql://192.168.0.162:3306/hello_world" --username=root --password=123456 generateChangeLog 数据库驱动取决于数据库
–sql.cj.jdbc.Driver
mysql连接
–classpath=mysql-connector-java-8.0.17.jar
⾃定义⽣成的初始化脚本⽂件名
–changeLogFile=./l
数据库连接地址
–url=“jdbc:mysql://192.168.0.162:3306/hello_world”
数据库⽤户名密码
-username=root
–password=123456
⽣成初始化表数据需要加上这个配置,⽣成表结构则不加
-diffTypes=data
⽅法⼆:使⽤Maven插件
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<changeLogFile>${basedir}/src/main/resources/liquibase/change_l</changeLogFile>
<!--changelog⽂件⽣成位置-->
<outputChangeLogFile>${basedir}/src/main/resources/liquibase/change_l</outputChangeLogFile>
<!--数据库连接-->
<driver&sql.jdbc.Driver</driver>
<url>jdbc:mysql://192.168.0.30:3306/school</url>
<username>qj</username>
<password>123456</password>
<!--输出⽂件编码-->
<outputFileEncoding>UTF-8</outputFileEncoding>
<!--执⾏的时候是否显⽰详细的参数信息-->
<verbose>true</verbose>
<!--连接⾮本地数据库是否弹出提⽰框-->
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
<!--⽣成changelog⽂件内容-->
<diffTypes>tables, views, columns, indexs,foreignkeys, primarykeys, uniqueconstraints, data</diffTypes>
</configuration>
</plugin>
如果只是⽣成数据库表脚本,则将上⾯的diffTypes注释起来或者去掉⾥⾯的data
如果只是⽣成数据脚本,则只留下data
如果要把数据表脚本和数据脚本⽣成到⼀个⽂件则保留上⾯的difftypes所有内容
安装好maven插件后maven插件中可以看如下图的指令,点击即可⽣成脚本⽂件
⽣成脚本如下
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="/xml/ns/dbchangelog" xmlns:ext="/xml/ns/dbchangelog-ext" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/dbchan    <changeSet author="404997819 (generated)" id="1590732067909-4">
<createTable tableName="t_student">
<column autoIncrement="true" name="studentId" remarks="学⽣⾃增ID" type="INT">
<constraints primaryKey="true"/>
</column>
<column name="classId" remarks="班级ID" type="INT"/>
<column name="userCode" remarks="⽤户唯⼀码" type="VARCHAR(20)"/>
<column name="studentName" remarks="学⽣姓名" type="VARCHAR(20)"/>
<column name="studentImageUrl" remarks="学⽣头像地址" type="VARCHAR(200)"/>
<column name="studentCode" remarks="学⽣学号" type="VARCHAR(50)"/>
springboot菜鸟教程eclipse<column name="IDCard" remarks="⾝份证号" type="VARCHAR(50)"/>
<column name="status" remarks="学⽣状态 1:在读 0:毕业 -1:转校" type="VARCHAR(5)"/>
<column name="flag" remarks="是否删除 1:正常显⽰,-1:表⽰删除" type="VARCHAR(10)"/>
<column name="createDate" remarks="创建时间" type="datetime"/>
</createTable>
</changeSet>
<changeSet author="404997819 (generated)" id="1590732067909-6">
<createTable tableName="t_teacherRelation">
<column autoIncrement="true" name="teacherRelationId" remarks="主键⾃增ID" type="INT">
<constraints primaryKey="true"/>
</column>
<column name="classId" remarks="班级ID" type="INT"/>
<column name="teacherId" remarks="教师ID" type="INT"/>
<column name="teacherType" remarks="教师类型 1:班主任" type="VARCHAR(10)"/>
<column name="flag" remarks="是否删除 1:正常显⽰,-1:表⽰删除" type="VARCHAR(10)"/>
<column name="createDate" remarks="创建时间" type="datetime"/>
</createTable>
</changeSet>
<changeSet author="404997819 (generated)" id="1590732067909-10">
<createIndex indexName="Reft_userinfo88" tableName="t_api_logs">
<column name="apiToken"/>
</createIndex>
</changeSet>
</databaseChangeLog>
到此这篇关于SpringBoot整合liquibase的⽂章就介绍到这了,更多相关SpringBoot整合liquibase内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。