最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot中自動(dòng)執(zhí)行sql腳本的方法實(shí)例

 更新時(shí)間:2022年01月10日 10:38:46   作者:大哥你先走  
在SpringBoot的架構(gòu)中,DataSourceInitializer類(lèi)可以在項(xiàng)目啟動(dòng)后初始化數(shù)據(jù),我們可以通過(guò)自動(dòng)執(zhí)行自定義sql腳本初始化數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中自動(dòng)執(zhí)行sql腳本的相關(guān)資料,需要的朋友可以參考下

說(shuō)明:所有的代碼基于SpringBoot 2.0.3版本

背景

在應(yīng)用程序啟動(dòng)后,可以自動(dòng)執(zhí)行建庫(kù)、建表等SQL腳本.下文中以要自動(dòng)化執(zhí)行people.sql腳本為例說(shuō)明,腳本在SpringBoot工程中的路徑為:classpath:people.sql,腳本的具體內(nèi)容如下:

CREATE TABLE IF NOT EXISTS people(
    persion_id BIGINT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(20),
    last_name VARCHAR(20),
    PRIMARY KEY (persion_id)
);

實(shí)現(xiàn)核心

在SpringBoot的架構(gòu)中,DataSourceInitializer類(lèi)可以實(shí)現(xiàn)自動(dòng)執(zhí)行腳本的功能。通過(guò)自定義DataSourceInitializer Bean就可以實(shí)現(xiàn)按照業(yè)務(wù)要求執(zhí)行特定的腳本。

實(shí)現(xiàn)方法

  • 前提
    已經(jīng)構(gòu)建了DataSource Bean。
  • 方法
    通過(guò)@Configuration、@Bean和@Value三個(gè)注解實(shí)現(xiàn)自定義DataSourceInitializer Bean,現(xiàn)在Bean的定義中實(shí)現(xiàn)自動(dòng)化執(zhí)行腳本的業(yè)務(wù)邏輯。
  • 代碼

 

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
import org.springframework.jdbc.datasource.init.DatabasePopulator;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import javax.sql.DataSource;
@Configuration
public class BatchTaskDataSourceInitializer {
    /**
     * 構(gòu)建Resource對(duì)象
     */
    @Value("classpath:schema-all.sql")
    private Resource businessScript;

    /**
     * 自定義Bean實(shí)現(xiàn)業(yè)務(wù)的特殊需求
     * @param dataSource
     * @return
     */
    @Bean
    public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
        final DataSourceInitializer initializer = new DataSourceInitializer();
        // 設(shè)置數(shù)據(jù)源
        initializer.setDataSource(dataSource);
        initializer.setDatabasePopulator(databasePopulator());
        return initializer;
    }

    private DatabasePopulator databasePopulator() {
        final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
        populator.addScripts(businessScript);
        return populator;
    }
}

注意

有兩點(diǎn)需要說(shuō)明下:

  • db文件夾下的腳本可能有多個(gè),所以,這里要使用PathMatchingResourcePatternResolver,讀取多個(gè).sql的文件;
  • 獲取文件的路徑是classpath*:script/db/*.sql,classpath后加個(gè)星號(hào),意思是連jar包中的符合該規(guī)則的文件,都可以獲取到,因?yàn)樵擁?xiàng)目最終會(huì)打成jar包來(lái)運(yùn)行,如果不使用這個(gè)星號(hào),就會(huì)出現(xiàn)在開(kāi)發(fā)的時(shí),沒(méi)有問(wèn)題,等到了測(cè)試或生產(chǎn)環(huán)境,就會(huì)出現(xiàn)找不到sql文件問(wèn)題。當(dāng)然,這里的文件規(guī)則,需要自己定義好,不要掃到了本不應(yīng)加載的其他包中的文件了。

總結(jié)

到此這篇關(guān)于Spring Boot中自動(dòng)執(zhí)行sql腳本的文章就介紹到這了,更多相關(guān)Spring Boot自動(dòng)執(zhí)行sql腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java操作FTP實(shí)現(xiàn)上傳下載功能

    Java操作FTP實(shí)現(xiàn)上傳下載功能

    這篇文章主要為大家詳細(xì)介紹了Java如何通過(guò)操作FTP實(shí)現(xiàn)上傳下載的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-11-11
  • Java中的this、super、final關(guān)鍵字詳解

    Java中的this、super、final關(guān)鍵字詳解

    這篇文章主要介紹了Java中的this、super、final關(guān)鍵字詳解,它在方法內(nèi)部使用,表示這個(gè)方法所屬對(duì)象的引用,它在構(gòu)造器內(nèi)部使用,表示該構(gòu)造器正在初始化的對(duì)象,this 可以調(diào)用類(lèi)的屬性、方法和構(gòu)造器,需要的朋友可以參考下
    2023-09-09
  • JAVA拋出異常的三種形式詳解

    JAVA拋出異常的三種形式詳解

    這篇文章主要介紹了JAVA拋出異常的三種形式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Java對(duì)Excel表格的上傳和下載處理方法

    Java對(duì)Excel表格的上傳和下載處理方法

    這篇文章主要介紹了Java對(duì)Excel表格的上傳和下載處理方法,需要的朋友可以參考下
    2017-08-08
  • Spring Mvc下實(shí)現(xiàn)以文件流方式下載文件的方法示例

    Spring Mvc下實(shí)現(xiàn)以文件流方式下載文件的方法示例

    這篇文章主要介紹了Spring Mvc下實(shí)現(xiàn)以文件流方式下載文件的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 基于Java接口回調(diào)詳解

    基于Java接口回調(diào)詳解

    這篇文章主要介紹了Java接口回調(diào)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java導(dǎo)出Excel動(dòng)態(tài)表頭的示例詳解

    Java導(dǎo)出Excel動(dòng)態(tài)表頭的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Java導(dǎo)出Excel動(dòng)態(tài)表頭的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2025-02-02
  • JDK8 HashMap擴(kuò)容機(jī)制分析詳解

    JDK8 HashMap擴(kuò)容機(jī)制分析詳解

    這篇文章主要為大家介紹了JDK8 HashMap擴(kuò)容機(jī)制分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java跳出多重嵌套循環(huán)過(guò)程解析

    Java跳出多重嵌套循環(huán)過(guò)程解析

    這篇文章主要介紹了Java跳出多重嵌套循環(huán)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱)

    JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱)

    這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評(píng)論

靖远县| 余庆县| 金阳县| 亚东县| 和静县| 宁蒗| 陵川县| 博野县| 禄丰县| 仁化县| 灵台县| 新竹县| 肃北| 华容县| 水城县| 海林市| 金秀| 尚志市| 凤庆县| 上蔡县| 泗阳县| 嘉峪关市| 晋州市| 剑阁县| 乡宁县| 桃源县| 库尔勒市| 达拉特旗| 长顺县| 循化| 嘉善县| 清镇市| 健康| 云龙县| 明星| 武功县| 通化县| 福安市| 岳普湖县| 左云县| 漳州市|