当前位置:Gxlcms > 数据库问题 > Spring Boot使用——项目启动自动执行sql脚本

Spring Boot使用——项目启动自动执行sql脚本

时间:2021-07-01 10:21:17 帮助过:122人阅读

类可以在项目启动后初始化数据,我们可以通过自动执行自定义sql脚本初始化数据。通过自定义DataSourceInitializer Bean就可以实现按照业务要求执行特定的脚本。

使用

  • 前提:项目数据源配置完成
  • 方法
    • 通过@Configuration、@Bean和@Value三个注解实现自定义DataSourceInitializer Bean,现在Bean的定义中实现自动化执行脚本的业务逻辑。
    • 代码如下
  1. <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.test.integration.rpc.initdata;
  2. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.beans.factory.annotation.Value;
  3. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Bean;
  4. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.context.annotation.Configuration;
  5. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.core.io.Resource;
  6. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.jdbc.datasource.init.DataSourceInitializer;
  7. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.jdbc.datasource.init.DatabasePopulator;
  8. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
  9. </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.sql.DataSource;
  10. </span><span style="color: #008000;">/**</span><span style="color: #008000;">
  11. * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> test
  12. * @Description: 自定义初始化数据源
  13. * @date 2020/4/11
  14. </span><span style="color: #008000;">*/</span><span style="color: #000000;">
  15. @Configuration
  16. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomizeDataSourceInitializer {
  17. @Value(</span>"classpath:testSql/test_farms.sql"<span style="color: #000000;">)
  18. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Resource functionScriptFarms;
  19. @Value(</span>"classpath:testSql/test_miners.sql"<span style="color: #000000;">)
  20. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Resource functionScriptMiners;
  21. @Value(</span>"classpath:testSql/test_pool_config.sql"<span style="color: #000000;">)
  22. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Resource functionScriptPoolConfig;
  23. @Bean
  24. </span><span style="color: #0000ff;">public</span> DataSourceInitializer dataSourceInitializer(<span style="color: #0000ff;">final</span><span style="color: #000000;"> DataSource dataSource) {
  25. </span><span style="color: #0000ff;">final</span> DataSourceInitializer initializer = <span style="color: #0000ff;">new</span><span style="color: #000000;"> DataSourceInitializer();
  26. </span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置数据源</span>
  27. <span style="color: #000000;"> initializer.setDataSource(dataSource);
  28. initializer.setDatabasePopulator(databasePopulator());
  29. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> initializer;
  30. }
  31. </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> DatabasePopulator databasePopulator() {
  32. </span><span style="color: #0000ff;">final</span> ResourceDatabasePopulator populator = <span style="color: #0000ff;">new</span><span style="color: #000000;"> ResourceDatabasePopulator();
  33. populator.addScripts(functionScriptFarms);
  34. populator.addScripts(functionScriptMiners);
  35. populator.addScripts(functionScriptPoolConfig);
  36. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> populator;
  37. }
  38. }</span>
    • SQL脚本如下:例子test_pool_config.sql
  1. <span style="color: #0000ff;">delete</span> <span style="color: #0000ff;">from</span><span style="color: #000000;"> `pool_configs`;
  2. </span><span style="color: #0000ff;">INSERT</span> <span style="color: #0000ff;">INTO</span> `pool_configs`(`pool_config_id`, `cdate`, `mdate`, `pool_config_mid` ) <span style="color: #0000ff;">VALUES</span> (<span style="color: #800000; font-weight: bold;">1</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bcf2a18a-b38b-4e3a-8852-7efbabc7954d</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">);
  3. </span><span style="color: #0000ff;">INSERT</span> <span style="color: #0000ff;">INTO</span> `pool_configs`(`pool_config_id`, `cdate`, `mdate`, `pool_config_mid` ) <span style="color: #0000ff;">VALUES</span> (<span style="color: #800000; font-weight: bold;">2</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bcf3a18a-b38b-4e3a-8852-7efbabc7954d</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">);
  4. </span><span style="color: #0000ff;">INSERT</span> <span style="color: #0000ff;">INTO</span> `pool_configs`(`pool_config_id`, `cdate`, `mdate`, `pool_config_mid` ) <span style="color: #0000ff;">VALUES</span> (<span style="color: #800000; font-weight: bold;">3</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bcf4a18a-b38b-4e3a-8852-7efbabc7954d</span><span style="color: #ff0000;">‘</span><span style="color: #000000;">);
  5. </span><span style="color: #0000ff;">INSERT</span> <span style="color: #0000ff;">INTO</span> `pool_configs`(`pool_config_id`, `cdate`, `mdate`, `pool_config_mid` ) <span style="color: #0000ff;">VALUES</span> (<span style="color: #800000; font-weight: bold;">4</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">2020-04-10 18:02:54</span><span style="color: #ff0000;">‘</span>, <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">bcf5a18a-b38b-4e3a-8852-7efbabc7954d</span><span style="color: #ff0000;">‘</span>);

 

Spring Boot使用——项目启动自动执行sql脚本

标签:port   注解   ali   des   frame   重启   framework   set   架构   

人气教程排行