1,引入maven依赖(日志)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
2,配置数据库连接信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///rbac?serverTimezone=UTC
username: root
password: root
3,编写DoSqlFile工具类
package com.manager.oa.util;
import com.manager.oa.exception.DoSqlException;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.DriverManager;
@Slf4j
@Component
public class DoSqlFile {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
public Connection getConnection() {
log.info("【MySQL】->url:{}", url);
log.info("【MySQL】->username:{}", username);
log.info("【MySQL】->password:{}", password);
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
log.info("数据库连接是否关闭?:{}", conn.isClosed());
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public boolean run(String sqlFilePath) {
try {
Connection conn = this.getConnection();
ScriptRunner runner = new ScriptRunner(conn);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
runner.setStopOnError(true);
Resources.setCharset(Charset.forName("UTF-8"));
runner.runScript(new InputStreamReader(new FileInputStream(sqlFilePath), "UTF-8"));
conn.close();
} catch (Exception e) {
e.printStackTrace();
throw new DoSqlException("sql执行失败", e);
}
return true;
}
}