mybatis执行sql脚本
最近在学习若依这个开源项目:
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脚本相关推荐
- java直接调用并执行sql脚本
1.背景:项目本身功能简单,不想使用开源框架引入过多不需要的依赖,避免程序部署时,人工忘记执行sql脚本文件问题 2.此demo为使用mybatis中脚本执行工具类org.apache.ibatis. ...
- [转帖]C#执行SQL脚本,读取XML文件
[转帖]C#执行SQL脚本,读取XML文件 需要添加如下引用: using System.IO; using System.Data.SqlClient; using System.Collectio ...
- Delphi 7 在程序中直接执行SQL脚本文件
Delphi 7 在程序中直接执行SQL脚本文件 在处理MSDE一些操作中.需要执行一些SQL脚本.有的是从 SQLServer 2000中生成的SQL为后缀的脚本.在MSDE中没有企业管理器, 操作 ...
- linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现
使用过的命令: 进入db2cmd db2 connect todb_aliasuserusernameusingpassword db2 -tvfc:\abc.sql-labc.log 参考如下: 可 ...
- Spring 执行 sql 脚本(文件)
本篇解决 Spring 执行SQL脚本(文件)的问题. 场景描述可以不看. 场景描述: 我在运行单测的时候,也就是 Spring 工程启动的时候,Spring 会去执行 classpath:schem ...
- 使用osql执行sql脚本
使用osql执行sql脚本 @echo off echo ╬ ╱◥███◣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ echo ╬ ︱田︱田 田 ︱ ...
- Oracle 在Sqlplus 执行sql脚本文件。
首先在随便1个地方建立1个sql语句的文件. 例如: 执行命令为: sqlplus loginID/passwd@serverIP/servcie_name @path/file.name 例如: 见 ...
- 服务器脚本执行sql文件命令行,sh命令执行sql脚本
sh命令执行sql脚本 内容精选 换一换 GAUSS-51400 : "Failed to execute the command: %s."SQLSTATE: 无错误原因: 执行 ...
- mysql免密码登录, 及使用-e 参数执行sql脚本
来源:http://www.tuicool.com/articles/7JbmYr 我们在编写shell脚本的时候,经常需要和 mysql 交互. 如果是交互环境,可能使用这样的命令登录到mysql ...
- 利用批处理自动执行sql脚本、备份、还原数据库
自动执行sql脚本: 假设sql脚本文件为a.txt,数据库用户名为sa 密码123 将sql脚本文件和批处理放在同一目录下,以下为批处理文件的内容: osql -U sa -P 123 -d Rif ...
最新文章
- java 位掩码_Java位掩码控制权限与()或(|)非(~)、的介绍
- SCCM 2012 R2---安装SCCM 2012 R2
- 【源代码】基于Android和蓝牙的单片机温度採集系统
- 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(二)
- $(function(){})和$(document).ready(function(){})
- 使用WPF和.NET 6将Windows应用程序迁移到Windows on Arm
- 指令集物联网操作系统 iSysCore OS 2021年将推出 3.0 版本!
- Win32 Application和Win32 Console Application
- 利用遗传算法解决TSP问题(C++)
- python抓取漫画(破解js)
- Matlab-香农编码
- bugzilla dbd-mysql_Redhat 搭建bugzilla平台
- 【18年北京网络赛】Tomb Raider【递归求所有子序列】
- 云南企业私有云平台搭建解决方案、Zstack云平台管理软件介绍
- python里美元怎么表示_说说 Python 正则表达式中的插入字符、美元字符
- 【逻辑思维训练 二】系统思维训练
- Ant design pro入坑指南
- 成绩统计(编写一个使用EL的jsp程序)
- 2020元旦献礼——从零开始开发一个操作系统
- C1083: 无法打开包括文件: plugin.moc: No such file or directory
热门文章
- 用了很多年的PC端离线版个人知识管理软件PKM2 Manager推荐给大家
- python的pyqt5教程_python PyQt5初级教程hello world
- Java语言实现人脸识别
- IDM下载器使用教程
- janusgraph 可视化工具
- c语言经典50道例题---精华篇
- 固高板卡mct2008调试轴回零_MCT2008-for-ges 固高所有GE运动控制卡的DEMO软件,用来测试板卡是否正常工作 matlab 238万源代码下载- www.pudn.com...
- BP神经网络及其app设计
- JCreator 使用技巧-1
- VBS整人代码大合集