Ver código fonte

优化动态 SQL 脚本执行方法

hubin 1 ano atrás
pai
commit
549a991f3b

+ 8 - 4
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/ddl/DdlScript.java

@@ -90,16 +90,20 @@ public class DdlScript {
         this.run(reader, autoCommit, null);
         this.run(reader, autoCommit, null);
     }
     }
 
 
+    public void run(Reader reader, boolean autoCommit, String delimiter) throws Exception {
+        this.run(this.dataSource.getConnection(), reader, autoCommit, delimiter);
+    }
+
     /**
     /**
      * 执行 SQL 脚本
      * 执行 SQL 脚本
      *
      *
+     * @param connection {@link Connection}
      * @param reader     SQL 脚本内容
      * @param reader     SQL 脚本内容
      * @param autoCommit 自动提交事务
      * @param autoCommit 自动提交事务
      * @param delimiter  执行 SQL 分隔符,默认 ; 符号结束执行
      * @param delimiter  执行 SQL 分隔符,默认 ; 符号结束执行
-     * @throws Exception
      */
      */
-    public void run(Reader reader, boolean autoCommit, String delimiter) throws Exception {
-        ScriptRunner scriptRunner = DdlHelper.getScriptRunner(dataSource.getConnection(), autoCommit);
+    public void run(Connection connection, Reader reader, boolean autoCommit, String delimiter) {
+        ScriptRunner scriptRunner = DdlHelper.getScriptRunner(connection, autoCommit);
         // 设置自定义 SQL 分隔符,默认 ; 符号分割
         // 设置自定义 SQL 分隔符,默认 ; 符号分割
         if (StringUtils.isNotBlank(delimiter)) {
         if (StringUtils.isNotBlank(delimiter)) {
             scriptRunner.setDelimiter(delimiter);
             scriptRunner.setDelimiter(delimiter);
@@ -132,7 +136,7 @@ public class DdlScript {
             Class.forName(driverClassName);
             Class.forName(driverClassName);
             connection = DriverManager.getConnection(url, user, password);
             connection = DriverManager.getConnection(url, user, password);
             // 执行 SQL 脚本
             // 执行 SQL 脚本
-            this.run(sql, delimiter);
+            this.run(connection, new StringReader(sql), this.autoCommit, delimiter);
             return true;
             return true;
         } catch (Exception e) {
         } catch (Exception e) {
             if (null != connection) {
             if (null != connection) {