SpringBoot整合flyway實(shí)現(xiàn)步驟解析
引入依賴(lài)
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.yang</groupId> <artifactId>fly-way-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>fly-way-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.flywaydb</groupId> <artifactId>flyway-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
第一版sql腳本
src/main/resources/db/migration/V1__sys_dept.sql
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for sys_dept -- ---------------------------- DROP TABLE IF EXISTS `sys_dept`; CREATE TABLE `sys_dept` ( `dept_id` int(20) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL COMMENT '部門(mén)名稱(chēng)', `sort` int(11) DEFAULT '0' COMMENT '排序', `create_time` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間', `update_time` datetime DEFAULT NULL COMMENT '修改時(shí)間', `del_flag` char(1) DEFAULT '0' COMMENT '是否刪除 -1:已刪除 0:正常', `parent_id` int(11) DEFAULT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='部門(mén)管理';
第二版sql腳本
src/main/resources/db/migration/V1.1__sys_dept.sql
INSERT INTO `sys_dept` VALUES (1, '總經(jīng)辦', 0, '2020-03-13 13:13:16', '2020-03-13 13:14:31', '0', 0); INSERT INTO `sys_dept` VALUES (2, '行政中心', 1, '2020-03-13 13:13:30', NULL, '0', 1); INSERT INTO `sys_dept` VALUES (3, '技術(shù)中心', 2, '2020-03-13 13:14:55', NULL, '0', 1); INSERT INTO `sys_dept` VALUES (4, '運(yùn)營(yíng)中心', 3, '2020-03-13 13:15:15', NULL, '0', 1); INSERT INTO `sys_dept` VALUES (5, '研發(fā)中心', 5, '2020-03-13 13:15:34', NULL, '0', 3); INSERT INTO `sys_dept` VALUES (6, '產(chǎn)品中心', 6, '2020-03-13 13:15:49', NULL, '0', 3); INSERT INTO `sys_dept` VALUES (7, '測(cè)試中心', 7, '2020-03-13 13:16:02', NULL, '0', 3);
項(xiàng)目配置文件,主要是dataSource,flyway的采用約定值
src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/fly_way?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
一些flyway配置項(xiàng)
flyway.baseline-description對(duì)執(zhí)行遷移時(shí)基準(zhǔn)版本的描述. flyway.baseline-on-migrate當(dāng)遷移時(shí)發(fā)現(xiàn)目標(biāo)schema非空,而且?guī)в袥](méi)有元數(shù)據(jù)的表時(shí),是否自動(dòng)執(zhí)行基準(zhǔn)遷移,默認(rèn)false. flyway.baseline-version開(kāi)始執(zhí)行基準(zhǔn)遷移時(shí)對(duì)現(xiàn)有的schema的版本打標(biāo)簽,默認(rèn)值為1. flyway.check-location檢查遷移腳本的位置是否存在,默認(rèn)false. flyway.clean-on-validation-error當(dāng)發(fā)現(xiàn)校驗(yàn)錯(cuò)誤時(shí)是否自動(dòng)調(diào)用clean,默認(rèn)false. flyway.enabled是否開(kāi)啟flywary,默認(rèn)true. flyway.encoding設(shè)置遷移時(shí)的編碼,默認(rèn)UTF-8. flyway.ignore-failed-future-migration當(dāng)讀取元數(shù)據(jù)表時(shí)是否忽略錯(cuò)誤的遷移,默認(rèn)false. flyway.init-sqls當(dāng)初始化好連接時(shí)要執(zhí)行的SQL. flyway.locations遷移腳本的位置,默認(rèn)db/migration. flyway.out-of-order是否允許無(wú)序的遷移,默認(rèn)false. flyway.password目標(biāo)數(shù)據(jù)庫(kù)的密碼. flyway.placeholder-prefix設(shè)置每個(gè)placeholder的前綴,默認(rèn)${. flyway.placeholder-replacementplaceholders是否要被替換,默認(rèn)true. flyway.placeholder-suffix設(shè)置每個(gè)placeholder的后綴,默認(rèn)}. flyway.placeholders.[placeholder name]設(shè)置placeholder的value flyway.schemas設(shè)定需要flywary遷移的schema,大小寫(xiě)敏感,默認(rèn)為連接默認(rèn)的schema. flyway.sql-migration-prefix遷移文件的前綴,默認(rèn)為V. flyway.sql-migration-separator遷移腳本的文件名分隔符,默認(rèn)__ flyway.sql-migration-suffix遷移腳本的后綴,默認(rèn)為.sql flyway.tableflyway使用的元數(shù)據(jù)表名,默認(rèn)為schema_version flyway.target遷移時(shí)使用的目標(biāo)版本,默認(rèn)為latest version flyway.url遷移時(shí)使用的JDBC URL,如果沒(méi)有指定的話(huà),將使用配置的主數(shù)據(jù)源 flyway.user遷移數(shù)據(jù)庫(kù)的用戶(hù)名 flyway.validate-on-migrate遷移時(shí)是否校驗(yàn),默認(rèn)為true.
啟動(dòng)項(xiàng)目可以看到業(yè)務(wù)表的變化及flyway_schema_history版本記錄表的變化。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot整合Flyway的方法(數(shù)據(jù)庫(kù)版本遷移工具)
- Flyway詳解及Springboot集成Flyway的詳細(xì)教程
- SpringBoot使用flyway初始化數(shù)據(jù)庫(kù)
- SpringBoot整合flyway實(shí)現(xiàn)自動(dòng)創(chuàng)建表的方法
- SpringBoot項(xiàng)目集成Flyway詳細(xì)過(guò)程
- SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法
- SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)遷移的實(shí)現(xiàn)示例
- springboot配置flyway(入門(mén)級(jí)別教程)
- spring boot整合flyway實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)維護(hù)的示例代碼
相關(guān)文章
Java如何計(jì)算兩個(gè)時(shí)間段內(nèi)的工作日天數(shù)
這篇文章主要介紹了Java如何計(jì)算兩個(gè)時(shí)間段內(nèi)的工作日天數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07詳解SpringBoot如何創(chuàng)建自定義Starter
Spring Boot的自動(dòng)配置機(jī)制為開(kāi)發(fā)人員提供了一種輕松集成和配置各種功能的便捷方式,本文將深入探討在Spring Boot中如何創(chuàng)建自定義Starter,為構(gòu)建模塊化且易維護(hù)的應(yīng)用提供有力的支持,需要的朋友可以參考下2024-02-02Lombok的@CustomLog流暢的公司多場(chǎng)景日志
這篇文章主要為大家介紹了Lombok的@CustomLog流暢的公司多場(chǎng)景日志開(kāi)發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Java源碼難點(diǎn)突破Lambda表達(dá)式執(zhí)行原理
這篇文章主要為大家介紹了Java難點(diǎn)突破Lambda表達(dá)式執(zhí)行原理分析及示例的實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Spring實(shí)現(xiàn)上拉刷新和下拉加載效果
這篇文章主要為大家詳細(xì)介紹了Spring實(shí)現(xiàn)上拉刷新和下拉加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Maven項(xiàng)目無(wú)法加載jdbc.properties的問(wèn)題解決
本文主要介紹了Maven項(xiàng)目無(wú)法加載jdbc.properties的問(wèn)題解決,文章首先分析了問(wèn)題的原因,然后提供了解決方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08IDEA 非常重要的一些設(shè)置項(xiàng)(一連串的問(wèn)題差點(diǎn)讓我重新用回 Eclipse)
這篇文章主要介紹了IDEA 非常重要的一些設(shè)置項(xiàng)(一連串的問(wèn)題差點(diǎn)讓我重新用回 Eclipse),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08SpringBoot基于過(guò)濾器和內(nèi)存實(shí)現(xiàn)重復(fù)請(qǐng)求攔截功能
這篇文章主要介紹了SpringBoot基于過(guò)濾器和內(nèi)存實(shí)現(xiàn)重復(fù)請(qǐng)求攔截,這里我們使用過(guò)濾器的方式對(duì)進(jìn)入服務(wù)器的請(qǐng)求進(jìn)行過(guò)濾操作,實(shí)現(xiàn)對(duì)相同客戶(hù)端請(qǐng)求同一個(gè)接口的過(guò)濾,需要的朋友可以參考下2023-01-01Java中List轉(zhuǎn)Map List實(shí)現(xiàn)的幾種姿勢(shì)
本文主要介紹了Java中List轉(zhuǎn)Map List實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06