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

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

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

說明:所有的代碼基于SpringBoot 2.0.3版本

背景

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

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)
);

實現(xiàn)核心

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

實現(xiàn)方法

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

 

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 {
    /**
     * 構建Resource對象
     */
    @Value("classpath:schema-all.sql")
    private Resource businessScript;

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

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

注意

有兩點需要說明下:

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

總結

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

相關文章

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

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

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

    Java中的this、super、final關鍵字詳解

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

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

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

    Java對Excel表格的上傳和下載處理方法

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

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

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

    基于Java接口回調詳解

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

    Java導出Excel動態(tài)表頭的示例詳解

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

    JDK8 HashMap擴容機制分析詳解

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

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

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

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

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

最新評論

南和县| 涞源县| 安阳县| 锡林郭勒盟| 宁国市| 八宿县| 囊谦县| 甘德县| 嘉善县| 广丰县| 云和县| 张北县| 格尔木市| 嘉义市| 江油市| 旺苍县| 清流县| 阳泉市| 新龙县| 阳山县| 新巴尔虎右旗| 霍山县| 廊坊市| 沅陵县| 馆陶县| 从江县| 襄汾县| 扶绥县| 南投市| 仙游县| 尼玛县| 忻州市| 江安县| 泽库县| 淳安县| 敖汉旗| 普陀区| 田林县| 怀集县| 比如县| 沾益县|