资源填充类ResourceDatabasePopulator

SpringBoot

# 1、类ResourceDatabasePopulator介绍

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

# 2、方法总结

修饰符和类型 方法及说明
void ***addScript (opens new window)***(Resource script)添加要执行的脚本以初始化或清理数据库。
void ***addScripts (opens new window)***(Resource... scripts)添加多个脚本来执行以初始化或清理数据库。
void ***execute (opens new window)***(DataSource dataSource)针对ResourceDatabasePopulator给定的 DataSource (opens new window).
void ***populate (opens new window)***(Connection connection)使用提供的 JDBC 连接填充、初始化或清理数据库。
void ***setBlockCommentEndDelimiter (opens new window)***(String blockCommentEndDelimiter)设置标识 SQL 脚本中的块注释的结束分隔符。
void ***setBlockCommentStartDelimiter (opens new window)***(String blockCommentStartDelimiter)设置标识 SQL 脚本中的块注释的起始分隔符。
void ***setCommentPrefix (opens new window)***(String commentPrefix)设置标识 SQL 脚本中单行注释的前缀。
void ***setCommentPrefixes (opens new window)***(String... commentPrefixes)设置标识 SQL 脚本中单行注释的前缀。
void ***setContinueOnError (opens new window)***(boolean continueOnError)指示应记录 SQL 中的所有失败但不会导致失败的标志。
void ***setIgnoreFailedDrops (opens new window)***(boolean ignoreFailedDrops)指示DROP可以忽略失败的 SQL 语句的标志。
void ***setScripts (opens new window)***(Resource... scripts)设置要执行的脚本以初始化或清理数据库,替换之前添加的任何脚本。
void ***setSeparator (opens new window)***(String separator)指定语句分隔符(如果是自定义分隔符)。
void ***setSqlScriptEncoding (opens new window)***(String sqlScriptEncoding)如果与平台编码不同,请为配置的 SQL 脚本指定编码。

# 3、通过注解@PostConstruct实现SpringBoot项目启动初始化数据(执行sql文件)

import cn.hutool.core.date.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.jdbc.datasource.init.ResourceDatabasePopulator;

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

/**
 * 项目启动初始化数据
 *
 * @Author: xxl
 * @Date: 2024/5/3 下午6:02
 */
@Configuration
@Slf4j
public class DataInitializationConfig {

    @Autowired
    DataSource dataSource;

    @PostConstruct
    public void init() {
        // 项目启动初始化基本数据
        log.info("数据初始化开始: " + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        // 通过直接读取sql文件执行
        ClassPathResource resources = new ClassPathResource("sql/client_api_init.sql");
        ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
        resourceDatabasePopulator.addScripts(resources);
        resourceDatabasePopulator.execute(dataSource);
        log.info("数据初始化结束: " + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

参考资料

https://www.cnblogs.com/tanqingfu1/p/16551756.html

最近修改于: 2024/12/29 23:59:52
和宇宙温柔的关联
房东的猫