• java 执行sql文件


    # 背景

    用例执行完毕,期望回滚数据,因此希望执行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();
            }
    
        }
  • 相关阅读:
    JDK 7 和 JDK 8 的区别
    浅显了解数据库存储引擎
    C++ 字符函数
    华为机试题 合唱队
    华为机试题 密码验证合格程序
    华为机试题 删除字符串中出现次数最少的字符
    如何解决机器学习中数据不平衡问题
    三分(求单峰或单谷)
    Vim配置——自动缩进(C/C++)
    Html日期控件
  • 原文地址:https://www.cnblogs.com/jwentest/p/8761357.html
Copyright © 2020-2023  润新知