繁体   English   中英

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

[英]Execute Filename.sql file in Java using MyBatis

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

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

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

你可以使用 org.apache.ibatis.jdbc.ScriptRunner 来做到这一点:

ScriptRunner runner = new ScriptRunner(dataSource.getConnection());
runner.setAutoCommit(true);
runner.setStopOnError(true);
runner.runScript(getResourceAsReader("Filename.sql"));
runner.closeConnection();
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();
    }
}

作为替代方案,您可以尝试使用 liquibase 或类似的东西,这为您提供了一种健康的脚本版本控制方式。 在这种情况下,您需要将 .sql 脚本转换为 liquibase 脚本。 然后您可以使用 Maven 插件或仅从 Java 执行它。 它允许您控制数据的状态。 否则,对于 DML 和 DQL 类型的查询,您可以使用 ScriptRunner 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM