使用MyBatis在Java中执行Filename.sql文件

时间:2015-12-01 10:35:17

标签: java mysql mybatis

我有一个 Filename.sql(Mysql Script) 文件,其中包含多个SQL语句。我使用MyBatis作为持久性框架,使用MySQL作为数据库。我想在Java程序中执行Filename.sql文件。

注意:我不想将查询作为单独的SQL语句执行。

此操作相当于MySQL命令提示符中的source Filename.sql

3 个答案:

答案 0 :(得分:2)

您可以使用org.apache.ibatis.jdbc.ScriptRunner执行此操作:

ScriptRunner runner = new ScriptRunner(dataSource.getConnection());
runner.setAutoCommit(true);
runner.setStopOnError(true);
runner.runScript(getResourceAsReader("Filename.sql"));
runner.closeConnection();

答案 1 :(得分:-1)

我认为你应该尝试使用像liquibase或类似的东西。在这种情况下,您需要将.sql-script转换为liquibase脚本。然后你可以用Maven插件或者只用Java来执行它。

答案 2 :(得分:-1)

private void runMysqlScript(String sqlScriptFilePath) {

    try {
        // Create MySQL Connection
        Class.forName(driverClassName);
        Connection connection = 
                DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);
        // Initialize object for ScriptRunner
        ScriptRunner runner = new ScriptRunner(connection);
        // Give the input file to Reader
        Reader br = new BufferedReader(new FileReader(sqlScriptFilePath));
        // Execute script
        runner.runScript(br);

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}