spring jdbc:initialize-database使用详解

来源:互联网 发布:linux私房菜 第四版 编辑:程序博客网 时间:2024/06/06 12:52

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标签配置

<jdbc:initialize-database data-source="dataSource" enabled="true" ignore-failures="NONE" separator="@@">

<jdbc:script location="classpath:com/foo/sql/db-schema.sql"/>

<jdbc:script location="classpath:com/foo/sql/db-test-data.sql"/>

</jdbc:initialize-database>

上面实例的scripts指定了两种不同的脚本,一种是创建数据库表,一种作为测试数据。当然,该脚本支持匹配模式,即多个数据库时候可以使用classpath*:/com/foo/**/sql/*-data.sql进行通配。

二、参数详解

jdbc:initialize-database标签中有一些可配置的参数选项,用配置数据库初始化的一些事件行为。

a).dataSource配置好的数据源。

b).enabled 是用来表明初始化数据库是否执行。这个enabled的值是一个boolean值。设置方法有两种:直接设置truefalse;或者读取配置文件来设置。

示例:

1、直接设置

<jdbc:initialize-database data-source="dataSource" enabled="true"

    <jdbc:script location="classpath:/add-resources.sql"/>

</jdbc:initialize-database>

2、配置文件读取

        <jdbc:initialize-database data-source="dataSource" enabled="#{systemProperties.INITIALIZE_DATABASE}">

    <jdbc:script location="classpath:/add-resources.sql"/>

</jdbc:initialize-database>

c).ignore-failures有三个值:NONE,DROPS,ALL

设置为NONE时,不忽略任何错误,当sql执行报错时服务启动终止。

设置为DROPS时,忽略删除错误,如当sql中有一个删除表而表不存在,此时这个错误会被忽略。

设置为ALL时,忽略任何错误。

d).separator分隔标识,可配置,该参数可以配置在jdbc:initialize-database中,会对所有script起作用,当然也可以在jdbc:script中单个配置

jdbc:script配置之后,则该script的分隔符使用jdbc:script配置中的。

示例:

<jdbc:initialize-database data-source="dataSource" eparator="@@">

   <jdbc:script location="classpath:com/foo/sql/db-schema.sql" separator=";"/>

<jdbc:script location="classpath:com/foo/sql/db-test-data-1.sql"/>

  <jdbc:script location="classpath:com/foo/sql/db-test-data-2.sql"/>

</jdbc:initialize-database>

此时第一个脚本分隔符为;,剩余两个脚本使用@@

特别的:默认不配置的情况下,sql语句直接必须使用;分开,或者当整个script不存在;时每行一个sql语句。

 

附:spring官方文档链接(part 15.9

http://docs.spring.io/spring/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/

0 0