package cn.stylefeng.guns.base.db.util;
|
|
import cn.stylefeng.guns.base.db.context.DataSourceContext;
|
import cn.stylefeng.guns.base.db.context.SqlSessionFactoryContext;
|
import cn.stylefeng.roses.core.config.properties.DruidProperties;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSessionFactory;
|
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.support.EncodedResource;
|
import org.springframework.jdbc.datasource.init.ScriptUtils;
|
|
import java.sql.Connection;
|
import java.sql.DriverManager;
|
|
/**
|
* sql文件执行
|
*
|
* @author fengshuonan
|
* @date 2019-06-18-17:10
|
*/
|
@Slf4j
|
public class SqlRunUtil {
|
|
/**
|
* 执行sql脚本文件,使用Spring工具类
|
*/
|
public static void runClassPathSql(String classpathFileName, String dbName) {
|
|
DruidProperties druidProperties = DataSourceContext.getDataSourcesConfs().get(dbName);
|
|
try {
|
Class.forName(druidProperties.getDriverClassName());
|
Connection conn = DriverManager.getConnection(druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
|
ClassPathResource classPathResource = new ClassPathResource(classpathFileName);
|
EncodedResource encodedResource = new EncodedResource(classPathResource, "utf-8");
|
ScriptUtils.executeSqlScript(conn, encodedResource);
|
} catch (Exception e) {
|
log.error("执行sql错误!", e);
|
throw new RuntimeException("执行sql错误!");
|
}
|
|
}
|
|
/**
|
* 执行系统路径sql的文件
|
*/
|
public static void runFileSystemSql(String dbName, String sqlPath) {
|
|
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryContext.getSqlSessionFactorys().get(dbName);
|
|
try {
|
SqlSession sqlSession = sqlSessionFactory.openSession();
|
Connection conn = sqlSession.getConnection();
|
|
FileSystemResource classPathResource = new FileSystemResource(sqlPath);
|
EncodedResource encodedResource = new EncodedResource(classPathResource, "GBK");
|
ScriptUtils.executeSqlScript(conn, encodedResource);
|
} catch (Exception e) {
|
log.error("执行sql错误!", e);
|
throw new RuntimeException("执行sql错误!");
|
}
|
}
|
|
}
|