SpringBoot启动自动执行sql脚本

一. 使用方式

  1. 首先我们得保证有对应的jar包
    解释:
    这个jar包是通过父标签引入的,点进去看一下:

    在进入父标签的依赖看看:

    真相了,这个jar包就在里面:
  2. 配置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
  1. 把 schema-all.sql 和 data-all.sql文件放到类路径下面,作者使用的test做的,也可以放置main中的类路径:

    注意:作者的yml文件不是默认环境条件下的,所以得配置虚拟机参数:
  2. 接下来就可以开始测试了 这一步会不一样:根据自己的情况来,只要能创建表和数据就好,检查数据库:

二. 原理分析

​ 刚开始我们不是说了嘛,需要导入对应的jar包,其实在这个包的META-INF目录下有个spring.factories文件,根据SPI机制,也就是SpringBoot中的自动装配机制,会扫描这个文件下面的类,其中就有个类:

进这个类看看,重点是这个SqlInitializationAutoConfiguration类:

这里就规定了我们yml文件中的前缀了:

继续看,还有个DataSourceProperties类 也很重要:

点进去看一下,会有几个属性:

此外,看另一个类:

点进去看看,有个方法,这也是为什么我们写成schema-all.sql 和 data-all.sql 当然是可以改的,我们这样写就是默认的:

以上就是我们为什么要这么配置的原理了。

三. 心得总结

SpringBoot启动自动执行sql语句配置起来还是蛮容易的,但是作者在配置的时候还是出了一些问题。主要是:

  1. 我的yml文件名称改了,一直读取的不是我设置的那个配置文件,很奇怪,解决方式,也是上图所说的,加一个虚拟机参数。
  2. 其次就是那个 schema-locations 和 data-locations的设置,注释掉的那个方法不行,但是用上面的那种可以,然后一直报xxx表不存在的错误。
  3. 还有一个点,schema-all.sql文件中使用的数据库,和自己要测试的一样哈,一般不会犯这个错误,但是我把数据库的名称改了,sql脚本中没改,就一直没有。

SpringBoot启动自动执行sql脚本相关推荐

  1. 利用批处理自动执行sql脚本、备份、还原数据库

    自动执行sql脚本: 假设sql脚本文件为a.txt,数据库用户名为sa 密码123 将sql脚本文件和批处理放在同一目录下,以下为批处理文件的内容: osql -U sa -P 123 -d Rif ...

  2. springboot启动时初始化sql脚本

    文章目录 1.初始化mysql数据库脚本 1.使用springboot jdbc初始化数据库 2.使用原生mybatis执行sql脚本 3.改良springboot jdbc初始化数据库 参考地址 基 ...

  3. dockers达梦镜像启动执行sql脚本

    可以在启动 Docker 达梦镜像时指定执行 SQL 脚本的命令. 具体操作如下: 将 SQL 脚本文件保存到本地,例如文件名为 "script.sql". 在启动 Docker ...

  4. [转]mysql下如何执行sql脚本

    原文地址:[url]http://www.cublog.cn/u3/94597/showart_1900808.html[/url] 首要步骤(一般可省略): 开启mysql服务(默认是开机时就自动运 ...

  5. Win10DB210.1企业版的安装卸载DB2建库建表空间执行sql脚本SQL5005C、SQL8027N license许可证等报错详解

    注意事项 以下是我在使用DB2软件在过程中遇到的一系列的问题和报错,我将它们全部总结归纳在一起,希望对其他和我一样的同学能有帮助. ①.Win10的系统貌似是只支持DB210以上的版本的安装,我层尝试 ...

  6. mysql下如何执行sql脚本

    mysql下如何执行sql脚本 首要步骤(一般可省略): 开启mysql服务(默认是开机时就自动运行了): 控制面板-->管理工具-->服务,在里面找到名称为mysql的项,双击就可看它的 ...

  7. java直接调用并执行sql脚本

    1.背景:项目本身功能简单,不想使用开源框架引入过多不需要的依赖,避免程序部署时,人工忘记执行sql脚本文件问题 2.此demo为使用mybatis中脚本执行工具类org.apache.ibatis. ...

  8. python 任务计划_windows 10 设定计划任务自动执行 python 脚本的方法

    我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...

  9. Spring 执行 sql 脚本(文件)

    本篇解决 Spring 执行SQL脚本(文件)的问题. 场景描述可以不看. 场景描述: 我在运行单测的时候,也就是 Spring 工程启动的时候,Spring 会去执行 classpath:schem ...

  10. php 设置window计划任务,windows下设置计划任务自动执行PHP脚本

    背景: 环境部署在linux下或者windows中,可以使用windows的自动任务设置自动执行脚本执行一些日常运维任务 图形界面设置相对比较简单 准备工作: wamp(集成的PHP执行环境) 已经写 ...

最新文章

  1. php批量修改标题,帝国CMS批量修改信息标题的方法
  2. 关闭Eclipse光标悬浮自动提示
  3. 老程序员如何避免沦落出局?
  4. 简易实现 TextView单行文本水平触摸滑动效果
  5. 【牛客小白月赛12】华华教月月做数学(快速幂+快速乘------模版题)
  6. Eclipse语言设置
  7. 【微信小程序】农历公历互相转换
  8. 创新Sound Blaster Tactic3D Alpha耳机驱动v1.0官方版
  9. 高通UEFI研究[三]
  10. uniapp 判断是否登录,是跳转至首页,否跳转至登录页
  11. 在vue里面使用eval()函数
  12. web常见的攻击方式有哪些,以及如何进行防御?
  13. 痞子衡嵌入式:在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺...
  14. 人工智能对未来的影响,可能会被替代的职业
  15. 用JAVA写出1到999的随性化数_OO第一单元——谜之随性总结
  16. 【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解
  17. routeros 3322电信联通脚本
  18. 【射频】Smith圆图阻抗匹配变化规律
  19. AnnotatedBeanDefinitionReader
  20. 万字详解DevOps的前世今生,收藏!

热门文章

  1. 最新摸头GIF在线生成工具源码+实测可用
  2. 计算机考试可以用平板电脑吗,操作计算机等级考试平板电脑可以吗
  3. 能自动更新的万能周报模板,有手就会用!
  4. FOC电机库 定点PID代码分析
  5. 软考之软件设计师(教程电子版、历年真题详解、其他资料)
  6. 如何关闭flashhelper的ff新推荐广告弹窗
  7. 软考高级 真题 2016年下半年 信息系统项目管理师 综合知识
  8. XLSTransformer+模板 导出 Excel
  9. OpenGL超级宝典(第7版)笔记22 原子计数器 清单5.31-5.34
  10. QQ for Linux 安装和卸载