lf知识星球banner

FlyWay实现数据库表结构以及数据通过应用自动升级

2020-02-10 07:50:00
Seagull
原创
4360


最终想实现的效果:用户以后无需再手动升级SQL,直接替换应用包即可,自动完成数据库表结构的升级以及初始数据的插入。


最近有用户提意见,希望通过flyway实现应用自动进行数据库表结构升级,尝试过程有点曲折,但是其实实现还是比较简单的,先记录下整个过程吧。


首先,准备依赖以及插件管理

由于我是老项目加入flyway插件,所以跟新项目有一点小小的区别。首先LuckyFrame本来就是用的SpringBoot,而SpringBoot中其实已经提供了flyway core包以及flyway插件的建议版本,所以我们直接在pom.xml文件中加入flyway-core的依赖以及插件管理即可。

按住Ctrl键,点击flyway-core,可以看到Spring Boot中默认建议版本。

这样,首先我们把依赖以及插件包准备好了。


第二,准备一个目录存放SQL文件以及放置flyway相关配置。

flyway的默认目录是["classpath:/db/migration"],所以我就直接在项目路径下创建了相对应的目录,src\main\resources\db\migration,创建好以后,把基准版本的SQL放入进去即可。


flyway的相关配置,我直接放到了application.yml文件中进行管理,spring boot会自动加载,没什么好说的。


第三步,项目启动的时候,发现spring boot会先加载定时任务,而定时任务又依赖于数据库的查询,这时候如果表还没有自动创建,就会出现问题,于是必须要改变spring boot加载的定时任务以及flyway的顺序,百度了一下,找到了比较靠谱的方案。

先创建一个flyway的配置类,目的是为了取消spring boot默认的加载配置顺序,而使用自定义配置,如下:

然后在启动的时候排除默认配置


然后我们找到定时任务的配置类,让定时任务的配置类依赖于flyway,这样,就会先执行flyway,再启动定时任务了。


启动项目,完美成功,自动创建了所有表数据。



温馨提示:LuckyFrame  V3.2及后续版本,将通过flyway自动升级表结构,用户只需升级更换应用包即可,无需再手动升级数据库SQL。


文章原创申明
  • 本站文章以及相关内容除注明 转贴外,均为本站 原创翻译

  • 如果本站转载的文章涉嫌侵犯了您的权益,请在评论区留言或是邮件联系管理员及时删除 【admin@luckyframe.cn】

发表评论
评论通过审核后显示。
付费知识圈