Sprig Boot下基于SQL Script初始化数据库的方法总结

环境信息

Spring Boot 2.0.3, Windows 7, JPA, Spring Data, MySQL

需求

虽然JPA和Hibernate底层提供了强大的支持,但是在实际开发中,仍然会有需要自定义数据表和初始化数据的需求,对于这个需求,Spring Boot也提供了相应的支持,只是对于这个需求是有一定的前提条件和约束的,换句话说,这些SQL script只能在特定设置和场景下使用。

使用场景和约束

对于数据库的schema和初始化数据是不能无限制地进行执行的,只能对于干净的数据化,或者每次都从0开始创建和执行的应用才适用。

方案1, 基于import.sql

在application.properties中的设置项:

spring.jpa.hibernate.ddl-auto: create/create-drop

适用于初次适用或者每次重新创建的情况。
sql 脚本的指定:

spring.jpa.properties.hibernatel.hbmddl.import_files=file1.sql,file2.sql

默认的路径为classpath下的sql文件。

方案2:基于schema和data的sql脚本

在application.properties下的设置项:

spring.datasource.initialization-mode=ALWAYS
spring.jpa.hibernate.ddl-auto=none

## default; false
spring.jpa.generate-ddl=false

## 指定sql文件
spring.datasource.data=classpath:sql/data-@database.type@.sql
spring.datasource.schema=classpath:sql/schema-@database.type@.sql

这里两个sql文件都是需要进行指定的,否则就会提示错误或者没有提示。
例如: sql文件为空,会提示错误信息
如果注释掉schema.sql文件,则不会提示错误信息,但是什么都不会发生。

总结

这些初始化的脚本都只能执行一次,然后就需要重新更改设置。或者将dll-auto设置为create-drop每次都重新开始。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值