SpringBoot启动自动执行sql脚本
SpringBoot启动自动执行sql脚本
一. 使用方式
- 首先我们得保证有对应的jar包
解释:
这个jar包是通过父标签引入的,点进去看一下:
在进入父标签的依赖看看:
真相了,这个jar包就在里面:
- 配置yml文件,分析看注释
spring:sql:init:encoding: utf-8# 设置模式,不要never,不然不起作用mode: alwaysplatform: mysqlusername: rootpassword: '你的密码'#这个数据的sql脚本的位置data-locations: classpath:data-all.sql# 这个是创建表的sql脚本的位置schema-locations: classpath:schema-all.sql#下面的这个方式好像不行
# schema-locations:
# -classpath*: schema-all.sql
# data-locations:
# -classpath*: data-all.sql# 配置我们的数据源,datasource:url: jdbc:mysql://localhost:3306/res?serverTimezone=UTCusername: rootpassword: '你的密码'driver-class-name: com.mysql.cj.jdbc.Driver
- 把 schema-all.sql 和 data-all.sql文件放到类路径下面,作者使用的test做的,也可以放置main中的类路径:
注意:作者的yml文件不是默认环境条件下的,所以得配置虚拟机参数: - 接下来就可以开始测试了 这一步会不一样:根据自己的情况来,只要能创建表和数据就好,检查数据库:
二. 原理分析
刚开始我们不是说了嘛,需要导入对应的jar包,其实在这个包的META-INF目录下有个spring.factories文件,根据SPI机制,也就是SpringBoot中的自动装配机制,会扫描这个文件下面的类,其中就有个类:
进这个类看看,重点是这个SqlInitializationAutoConfiguration类:
这里就规定了我们yml文件中的前缀了:
继续看,还有个DataSourceProperties类 也很重要:
点进去看一下,会有几个属性:
此外,看另一个类:
点进去看看,有个方法,这也是为什么我们写成schema-all.sql 和 data-all.sql 当然是可以改的,我们这样写就是默认的:
以上就是我们为什么要这么配置的原理了。
三. 心得总结
SpringBoot启动自动执行sql语句配置起来还是蛮容易的,但是作者在配置的时候还是出了一些问题。主要是:
- 我的yml文件名称改了,一直读取的不是我设置的那个配置文件,很奇怪,解决方式,也是上图所说的,加一个虚拟机参数。
- 其次就是那个 schema-locations 和 data-locations的设置,注释掉的那个方法不行,但是用上面的那种可以,然后一直报xxx表不存在的错误。
- 还有一个点,schema-all.sql文件中使用的数据库,和自己要测试的一样哈,一般不会犯这个错误,但是我把数据库的名称改了,sql脚本中没改,就一直没有。
SpringBoot启动自动执行sql脚本相关推荐
- 利用批处理自动执行sql脚本、备份、还原数据库
自动执行sql脚本: 假设sql脚本文件为a.txt,数据库用户名为sa 密码123 将sql脚本文件和批处理放在同一目录下,以下为批处理文件的内容: osql -U sa -P 123 -d Rif ...
- springboot启动时初始化sql脚本
文章目录 1.初始化mysql数据库脚本 1.使用springboot jdbc初始化数据库 2.使用原生mybatis执行sql脚本 3.改良springboot jdbc初始化数据库 参考地址 基 ...
- dockers达梦镜像启动执行sql脚本
可以在启动 Docker 达梦镜像时指定执行 SQL 脚本的命令. 具体操作如下: 将 SQL 脚本文件保存到本地,例如文件名为 "script.sql". 在启动 Docker ...
- [转]mysql下如何执行sql脚本
原文地址:[url]http://www.cublog.cn/u3/94597/showart_1900808.html[/url] 首要步骤(一般可省略): 开启mysql服务(默认是开机时就自动运 ...
- Win10DB210.1企业版的安装卸载DB2建库建表空间执行sql脚本SQL5005C、SQL8027N license许可证等报错详解
注意事项 以下是我在使用DB2软件在过程中遇到的一系列的问题和报错,我将它们全部总结归纳在一起,希望对其他和我一样的同学能有帮助. ①.Win10的系统貌似是只支持DB210以上的版本的安装,我层尝试 ...
- mysql下如何执行sql脚本
mysql下如何执行sql脚本 首要步骤(一般可省略): 开启mysql服务(默认是开机时就自动运行了): 控制面板-->管理工具-->服务,在里面找到名称为mysql的项,双击就可看它的 ...
- java直接调用并执行sql脚本
1.背景:项目本身功能简单,不想使用开源框架引入过多不需要的依赖,避免程序部署时,人工忘记执行sql脚本文件问题 2.此demo为使用mybatis中脚本执行工具类org.apache.ibatis. ...
- python 任务计划_windows 10 设定计划任务自动执行 python 脚本的方法
我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...
- Spring 执行 sql 脚本(文件)
本篇解决 Spring 执行SQL脚本(文件)的问题. 场景描述可以不看. 场景描述: 我在运行单测的时候,也就是 Spring 工程启动的时候,Spring 会去执行 classpath:schem ...
- php 设置window计划任务,windows下设置计划任务自动执行PHP脚本
背景: 环境部署在linux下或者windows中,可以使用windows的自动任务设置自动执行脚本执行一些日常运维任务 图形界面设置相对比较简单 准备工作: wamp(集成的PHP执行环境) 已经写 ...
最新文章
- php批量修改标题,帝国CMS批量修改信息标题的方法
- 关闭Eclipse光标悬浮自动提示
- 老程序员如何避免沦落出局?
- 简易实现 TextView单行文本水平触摸滑动效果
- 【牛客小白月赛12】华华教月月做数学(快速幂+快速乘------模版题)
- Eclipse语言设置
- 【微信小程序】农历公历互相转换
- 创新Sound Blaster Tactic3D Alpha耳机驱动v1.0官方版
- 高通UEFI研究[三]
- uniapp 判断是否登录,是跳转至首页,否跳转至登录页
- 在vue里面使用eval()函数
- web常见的攻击方式有哪些,以及如何进行防御?
- 痞子衡嵌入式:在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺...
- 人工智能对未来的影响,可能会被替代的职业
- 用JAVA写出1到999的随性化数_OO第一单元——谜之随性总结
- 【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解
- routeros 3322电信联通脚本
- 【射频】Smith圆图阻抗匹配变化规律
- AnnotatedBeanDefinitionReader
- 万字详解DevOps的前世今生,收藏!