最近在学习若依这个开源项目:
https://gitee.com/y_project/RuoYi-Vue

默认的代码生成模块用起来总感觉别扭,比如说,每次生成的代码还要单独的手动执行一下SQL语句。我就在想能不能代码生成的时候就自己帮我执行好了。这样能省个10几秒时间。

由于若依这个框架默认的数据库操作组件是mybatis,所以本文就来研究一下如何通过mybatis来执行sql脚本。

Service

我修改的如下代码:
RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java

核心代码如下:

package com.ruoyi.generator.service;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.stereotype.Service;import javax.sql.DataSource;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;/*** 业务 服务层实现** @author ruoyi*/
@Service
public class GenTableServiceImpl implements IGenTableService
{private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);@Autowiredprivate DataSource dataSource;/*** 使用ScriptRunner执行SQL脚本* @param  filePaths 是文件的绝对路径数组,格式如下:* String[] filePaths = {"/xxx/sql/update1.sql", "/xxx/sql/update2.sql"};*/public void doExecuteSql(String[] filePaths) {//通过数据源获取数据库链接Connection connection = DataSourceUtils.getConnection(dataSource);//创建脚本执行器ScriptRunner scriptRunner = new ScriptRunner(connection);//创建字符输出流,用于记录SQL执行日志StringWriter writer = new StringWriter();PrintWriter print = new PrintWriter(writer);//设置执行器日志输出scriptRunner.setLogWriter(print);//设置执行器错误日志输出scriptRunner.setErrorLogWriter(print);//设置读取文件格式Resources.setCharset(StandardCharsets.UTF_8);for (String path : filePaths) {Reader reader = null;try {File file = new File(path);//获取资源文件的字符输入流if(file.exists()) {reader = new FileReader(file);}} catch (IOException e) {//文件流获取失败,关闭链接log.error(e.getMessage(), e);scriptRunner.closeConnection();return;}//执行SQL脚本scriptRunner.runScript(reader);//关闭文件输入流try {reader.close();} catch (IOException e) {log.error(e.getMessage(), e);}}//输出SQL执行日志log.debug(writer.toString());//关闭输入流scriptRunner.closeConnection();}
}

参考

《spring+mybatis执行SQL脚本文件》
https://blog.csdn.net/Michean/article/details/112651793

mybatis执行sql脚本相关推荐

  1. java直接调用并执行sql脚本

    1.背景:项目本身功能简单,不想使用开源框架引入过多不需要的依赖,避免程序部署时,人工忘记执行sql脚本文件问题 2.此demo为使用mybatis中脚本执行工具类org.apache.ibatis. ...

  2. [转帖]C#执行SQL脚本,读取XML文件

    [转帖]C#执行SQL脚本,读取XML文件 需要添加如下引用: using System.IO; using System.Data.SqlClient; using System.Collectio ...

  3. Delphi 7 在程序中直接执行SQL脚本文件

    Delphi 7 在程序中直接执行SQL脚本文件 在处理MSDE一些操作中.需要执行一些SQL脚本.有的是从 SQLServer 2000中生成的SQL为后缀的脚本.在MSDE中没有企业管理器, 操作 ...

  4. linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现

    使用过的命令: 进入db2cmd db2 connect todb_aliasuserusernameusingpassword db2 -tvfc:\abc.sql-labc.log 参考如下: 可 ...

  5. Spring 执行 sql 脚本(文件)

    本篇解决 Spring 执行SQL脚本(文件)的问题. 场景描述可以不看. 场景描述: 我在运行单测的时候,也就是 Spring 工程启动的时候,Spring 会去执行 classpath:schem ...

  6. 使用osql执行sql脚本

    使用osql执行sql脚本 @echo off echo              ╬ ╱◥███◣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ echo              ╬ ︱田︱田 田 ︱     ...

  7. Oracle 在Sqlplus 执行sql脚本文件。

    首先在随便1个地方建立1个sql语句的文件. 例如: 执行命令为: sqlplus loginID/passwd@serverIP/servcie_name @path/file.name 例如: 见 ...

  8. 服务器脚本执行sql文件命令行,sh命令执行sql脚本

    sh命令执行sql脚本 内容精选 换一换 GAUSS-51400 : "Failed to execute the command: %s."SQLSTATE: 无错误原因: 执行 ...

  9. mysql免密码登录, 及使用-e 参数执行sql脚本

    来源:http://www.tuicool.com/articles/7JbmYr 我们在编写shell脚本的时候,经常需要和 mysql 交互. 如果是交互环境,可能使用这样的命令登录到mysql ...

  10. 利用批处理自动执行sql脚本、备份、还原数据库

    自动执行sql脚本: 假设sql脚本文件为a.txt,数据库用户名为sa 密码123 将sql脚本文件和批处理放在同一目录下,以下为批处理文件的内容: osql -U sa -P 123 -d Rif ...

最新文章

  1. java 位掩码_Java位掩码控制权限与()或(|)非(~)、的介绍
  2. SCCM 2012 R2---安装SCCM 2012 R2
  3. 【源代码】基于Android和蓝牙的单片机温度採集系统
  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(二)
  5. $(function(){})和$(document).ready(function(){})
  6. 使用WPF和.NET 6将Windows应用程序迁移到Windows on Arm
  7. 指令集物联网操作系统 iSysCore OS 2021年将推出 3.0 版本!
  8. Win32 Application和Win32 Console Application
  9. 利用遗传算法解决TSP问题(C++)
  10. python抓取漫画(破解js)
  11. Matlab-香农编码
  12. bugzilla dbd-mysql_Redhat 搭建bugzilla平台
  13. 【18年北京网络赛】Tomb Raider【递归求所有子序列】
  14. 云南企业私有云平台搭建解决方案、Zstack云平台管理软件介绍
  15. python里美元怎么表示_说说 Python 正则表达式中的插入字符、美元字符
  16. 【逻辑思维训练 二】系统思维训练
  17. Ant design pro入坑指南
  18. 成绩统计(编写一个使用EL的jsp程序)
  19. 2020元旦献礼——从零开始开发一个操作系统
  20. C1083: 无法打开包括文件: plugin.moc: No such file or directory

热门文章

  1. 用了很多年的PC端离线版个人知识管理软件PKM2 Manager推荐给大家
  2. python的pyqt5教程_python PyQt5初级教程hello world
  3. Java语言实现人脸识别
  4. IDM下载器使用教程
  5. janusgraph 可视化工具
  6. c语言经典50道例题---精华篇
  7. 固高板卡mct2008调试轴回零_MCT2008-for-ges 固高所有GE运动控制卡的DEMO软件,用来测试板卡是否正常工作 matlab 238万源代码下载- www.pudn.com...
  8. BP神经网络及其app设计
  9. JCreator 使用技巧-1
  10. VBS整人代码大合集