# 背景
用例執行完畢,期望復原資料,是以希望執行sql來復原資料
# 步驟
直接show代碼,借助的是mybatis的ScriptRunner
/**
* 執行xx庫下的表備份腳本
*
* @param tableName
*/
public static void runSqlInStat(String tableName) {
String className = Configurations.INSTANCE.get("jdbc.xx.driver");
String dbUrl = Configurations.INSTANCE.get("jdbc.xx.url");
String dbUsername = Configurations.INSTANCE.get("jdbc.xx.username");
String dbPassword = Configurations.INSTANCE.get("jdbc.xx.password");
try {
Class.forName(className);
Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
ScriptRunner runner = new ScriptRunner(conn);
runner.setAutoCommit(true);
String fileName = String.format("src/main/resources/db/%s.sql", tableName);
File file = new File(fileName);
try {
if (file.getName().endsWith(".sql")) {
runner.setFullLineDelimiter(false);
runner.setDelimiter(";");//語句結束符号設定
runner.setLogWriter(null);//日志資料輸出,這樣就不會輸出過程
runner.setSendFullScript(false);
runner.setAutoCommit(true);
runner.setStopOnError(true);
runner.runScript(new InputStreamReader(new FileInputStream(fileName), "utf8"));
logger.info(String.format("【%s】復原成功", tableName));
}
} catch (Exception e) {
e.printStackTrace();
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
雖千萬人,吾往矣!