Org.springframework.jdbc.datasource.init使用详解
org.springframework.jdbc.datasource.init支持在项目启动的时候对数据库的初始化操作。
一、使用方式:使用Spring XML进行初始化数据库(Initializing a database using Spring XML)
a).首先需要为XML加上spring-jdbc命名空间 xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd"
b).在配置文件加入initialize-database标签配置
上面实例的scripts指定了两种不同的脚本,一种是创建数据库表,一种作为测试数据。当然,该脚本支持匹配模式,即多个数据库时候可以使用classpath*:/com/foo/**/sql/*-data.sql进行通配。
二、参数详解
jdbc:initialize-database标签中有一些可配置的参数选项,用配置数据库初始化的一些事件行为。
a).dataSource配置好的数据源。
b).enabled 是用来表明初始化数据库是否执行。这个enabled的值是一个boolean值。设置方法有两种:直接设置true或false;或者读取配置文件来设置。
示例:
1、直接设置
2、配置文件读取
c).ignore-failures有三个值:NONE,DROPS,ALL
设置为NONE时,不忽略任何错误,当sql执行报错时服务启动终止。
设置为DROPS时,忽略删除错误,如当sql中有一个删除表而表不存在,此时这个错误会被忽略。
设置为ALL时,忽略任何错误。
d).separator分隔标识,可配置,该参数可以配置在jdbc:initialize-database中,会对所有script起作用,当然也可以在jdbc:script中单个配置
当jdbc:script配置之后,则该script的分隔符使用jdbc:script配置中的。
示例:
此时第一个脚本分隔符为“;”,剩余两个脚本使用“@@”
特别的:默认不配置的情况下,sql语句直接必须使用“;”分开,或者当整个script不存在“;”时每行一个sql语句。
附:spring官方文档链接(part 15.9)
http://docs.spring.io/spring/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/