SpringBoot项目启动初始化数据(执行sql文件)
1、类ResourceDatabasePopulator介绍
使用外部资源中定义的 SQL 脚本填充、初始化或清理数据库。
- 调用addScript(org.springframework.core.io.Resource)以添加单个 SQL 脚本位置。
- 调用addScripts(org.springframework.core.io.Resource...)以添加多个 SQL 脚本位置。
- 请参阅此类中的 setter 方法以获取更多配置选项。
- 调用populate(java.sql.Connection)或execute(javax.sql.DataSource)使用配置的脚本初始化或清理数据库。
2、方法总结
修饰符和类型 | 方法及说明 |
---|---|
void |
添加要执行的脚本以初始化或清理数据库。
|
void |
添加多个脚本来执行以初始化或清理数据库。
|
void |
针对 ResourceDatabasePopulator 给定的 DataSource.
|
void |
使用提供的 JDBC 连接填充、初始化或清理数据库。
|
void |
设置标识 SQL 脚本中的块注释的结束分隔符。
|
void |
设置标识 SQL 脚本中的块注释的起始分隔符。
|
void |
设置标识 SQL 脚本中单行注释的前缀。
|
void |
设置标识 SQL 脚本中单行注释的前缀。
|
void |
指示应记录 SQL 中的所有失败但不会导致失败的标志。
|
void |
指示 DROP 可以忽略失败的 SQL 语句的标志。
|
void |
设置要执行的脚本以初始化或清理数据库,替换之前添加的任何脚本。
|
void |
指定语句分隔符(如果是自定义分隔符)。
|
void |
如果与平台编码不同,请为配置的 SQL 脚本指定编码。
|
3、通过注解@PostConstruct实现
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"));
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库