常见问题03:SpringBoot项目启动初始化数据(执行sql文件)

1、类ResourceDatabasePopulator介绍

使用外部资源中定义的 SQL 脚本填充、初始化或清理数据库。

  1. 调用addScript(org.springframework.core.io.Resource)以添加单个 SQL 脚本位置。
  2. 调用addScripts(org.springframework.core.io.Resource...)以添加多个 SQL 脚本位置。
  3. 请参阅此类中的 setter 方法以获取更多配置选项。
  4. 调用populate(java.sql.Connection)或execute(javax.sql.DataSource)使用配置的脚本初始化或清理数据库。

2、方法总结


3、通过注解@PostConstruct实现

bash 复制代码
package com.shucha.deveiface.web.config;

import com.sdy.common.utils.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.util.Date;

/**
 * @author tqf
 * @Description 项目启动初始化数据
 * @Version 1.0
 * @since 2022-04-13 09:29
 */
@Configuration
@Slf4j
public class DataInitializationConfig {

    @Autowired
    DataSource dataSource;

    @PostConstruct
    public void init() {
        // 项目启动初始化基本数据
        log.info("数据初始化开始: " + DateUtil.dateToString(new Date(),"yyyy-MM-dd HH:mm:ss"));
        // 通过直接读取sql文件执行
        Resource resources = new ClassPathResource("sql/client_api_auth.sql");
        ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
        resourceDatabasePopulator.addScripts(resources);
        resourceDatabasePopulator.execute(dataSource);
        log.info("数据初始化结束: " + DateUtil.dateToString(new Date(),"yyyy-MM-dd HH:mm:ss"));
    }
}
相关推荐
Wang's Blog4 分钟前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿34 分钟前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河40 分钟前
python量化:行情数据回溯
java·开发语言·python·金融·maven
Jlzn88881 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
香吧香1 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
我是人✓1 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 阿里云 OSS 入门案例:从创建 Bucket 到上传拿到可访问 URL
java·阿里云·交友
裕晟资质规划3 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
念念清晰3 小时前
000-OpenJDK17 源码构建:MacOS环境(M芯片)
java·后端
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 百度人脸识别入门案例
java·百度·交友