springboot启动运行.sql文件自动建表
springboot启动运行.sql文件自动建表
import org.apache.ibatis.jdbc.ScriptRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
/**
* springboot启动运行.sql文件自动建表
*/
@Configuration
public class InitSqlTableClass {
// 这里从.yml配置文件读取数据库连接配置
@Value("${spring.datasource.name}")
private String name;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@PostConstruct
public void test() throws IOException, SQLException {
// 放在项目中.sql文件的路径
String path = "src/main/resources/sql";
// 连接数据库
Connection conn = DriverManager.getConnection(url, username, password);
// 创建ScriptRunner,用于执行SQL脚本
ScriptRunner runner = new ScriptRunner(conn);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
// 获取项目中的所有要执行的sql文件
File[] files = new File(path).listFiles();
assert files != null;
for (File file : files) {
// 执行SQL脚本
runner.runScript(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8));
}
}
conn.close();
}
}
下一篇:
判断语句if以及逻辑运算符
