前言
网上关于数据库初始化的配置寥寥无几,或者都是一些左手倒右手的deprecated的内容(太多烂透了的废话转载,真的低效)。所以不得不去自己翻doc,简单记录如下。
springboot版本2.6+
提示:以下是本篇文章正文内容,下面案例可供参考
1.Mysql
application配置文件
spring:
datasource:
username: root
password: 123
#?serverTimezone=UTC解决时区的报错
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 可以看到,我这里是mysql,连接池用的是ali的druid,实测hikari也是可行的
sql: # 和DataSource同级
init:
platform: Mysql
mode: always
encoding: utf-8
# schema-locations: classpath:schema-Mysql.sql
# data-locations: classpath:data-Mysql.sql
如上,一般地,schema.sql用于数据库的创建和设定,data.sql用于初始数据的写入,比如测试数据、root账户之类的,很外行的说法,doc则是这么说的。
schema.sql can be used to create the schema for JPA-managed entities and data.sql can be used to populate it.
如果像我这么配置,ddl语法的sql文件必须放在src/main/resources
下,名字只能取schema-@xx@,xx就是你设置的platform的值,因此实际要存在src/main/resources/schema-Mysql.sql
这个文件,这样方便多数据库多配置的情况。也可以把上面代码的末两个k-v用上,也就是自定义路径,这时文件名和路径就可以随便改了,classpath:
默认搜索src/main/resources。
外置,在应用程序运行的目录里
内置,在config包内
内置,在Classpath根目录
2.PG
同上
总结和参考
总结:spbt能通过配置解决的,千万不要写代码。
此外更改自己的搜索优先级为:1、思否;2、Google;3、官方文档,其实很多官方文档比那些二次加工的写得易懂……4、百度
参考链接: spring docs