spring jdbc:initialize-database使用詳解
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
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值。設定方法有兩種:直接設定true或false
示例:
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:scriptlocation="classpath:com/foo/sql/db-schema.sql" separator=";"/>
<jdbc:scriptlocation="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)