首页 > 数据库 >将mybatis日志转化成可执行的sql

将mybatis日志转化成可执行的sql

时间:2022-10-16 01:00:48浏览次数:85  
标签:statementStr sql parametersStr var textVa SQL mybatis 日志

简介

本文复制自 https://blog.csdn.net/qq_44927883/article/details/117750732

请关注原作者,对原作者收藏和点赞。下面是介绍

这个工具是将日志中的SQ转为可执行的SQL的网页工具,用浏览器打开即可,如下图


不过不支持转化成批量插入的sql

源码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        function f(obj) {
            var textVa = obj.value;
            // 获取带问号的SQL语句
            var statementStartIndex = textVa.indexOf('Preparing: ');
            var statementEndIndex = textVa.length - 1;
            for (var i = statementStartIndex; i < textVa.length; i++) {
                if (textVa[i] == "\n") {
                    statementEndIndex = i;
                    break;
                }
            }
            var statementStr = textVa.substring(statementStartIndex + "Preparing: ".length, statementEndIndex);
            console.log(statementStr);
            //获取参数
            var parametersStartIndex = textVa.indexOf('Parameters: ');
            var parametersEndIndex = textVa.length - 1;
            for (var i = parametersStartIndex; i < textVa.length; i++) {
                if (textVa[i] == "\n") {
                    parametersEndIndex = i;
                    break;
                } else {
                    console.log(textVa[i]);
                }
            }
            var parametersStr = textVa.substring(parametersStartIndex + "Parameters: ".length, parametersEndIndex);
            parametersStr = parametersStr.split(",");
            console.log(parametersStr);
            for (var i = 0; i < parametersStr.length; i++) {
                // 如果数据中带括号将使用其他逻辑
                tempStr = parametersStr[i].substring(0, parametersStr[i].indexOf("("));
                // 获取括号中内容
                typeStr = parametersStr[i].substring(parametersStr[i].indexOf("(") + 1, parametersStr[i].indexOf(")"));
                // 如果为字符类型
                if (typeStr == "String" || typeStr == "Timestamp") {
                    statementStr = statementStr.replace("?", "'" + tempStr.trim() + "'");
                } else {
                    // 数值类型
                    statementStr = statementStr.replace("?", tempStr.trim());
                }
            }
            console.log(statementStr);
            document.getElementById("d1").innerHTML = statementStr;
            return textVa;
        }

        function copySQL() {
            var SQL = document.getElementById("d1");
            SQL.select(); // 选择对象
            document.execCommand("Copy"); // 执行浏览器复制命令
            var msg = document.getElementById("msg");
            msg.innerHTML = "已复制到剪切板";
            setTimeout(function () {
                msg.innerHTML = "";
            }, 3000);

        }

        function clearLog(obj) {
            obj.select();
            obj.value = "";
        }

    </script>
</head>
<body>

<h2><font color="#00bfff"> 输入Mybatis SQL日志:</font></h2>

<textarea id="sqlLog" rows="13" cols="140" style="font-size:20px"></textarea>


<div style="border:0px deepskyblue solid;width:1425px;height:50px;text-align:right">
    <button style="color:mediumblue;width:100px;height:60px" type="button"
            onclick="clearLog(document.getElementById('sqlLog'))">
        清空
    </button>
    <button style="color:mediumblue;width:100px;height:60px" type="submit"
            onclick="f(document.getElementById('sqlLog'))">
        解析SQL
    </button>
</div>

<h2><font color="#32cd32">解析为可执行SQL:</font></h2>

<textarea id="d1" rows="13" cols="140" style="font-size:20px"></textarea>
<div style="border:0px deepskyblue solid;width:1425px;height:50px;text-align:right">
    <button style="color:mediumblue;width:100px;height:60px" type="button" onclick="copySQL()">复制SQL</button>
</div>

<div id="msg"
     style="color:cornflowerblue;border:0px black solid;width:800px;height:20px;text-align:right;font-style: initial;font-size: large">
</div>

</body>
</html>


使用方法

1.复制源码,新建记事本,粘贴源码,将记事本重命名,改为xx.html格式。

2.复制Mybatis日志中的SQL日志,必须注意,日志必须包含Preparing:和Parameters:全部内容,而且日志换行格式要保留,不要复制成纯文本,直接ctrl+c即可,见效果图。

3.用本地浏览器打开HTML页面,打开页面后,粘贴到顶部文本框,点击解析SQL按钮。下方文本框会出现解析后的SQL。点击复制SQL,即可复制到剪切板。这时即可去数据执行了。

注:若出现参数无法自动填充,请查看SQL日志格式,是否是原格式,是否保留了原有的换行等。若不是,重新复制下日志即可。

结语

本文复制自:(116条消息) 免费非破解 Mybatis Log Plugin_好好敲代码的三好青年的博客-CSDN博客_mybatis log plugin。在此文基础上做了页面和功能优化。

本文复制自https://blog.csdn.net/qq_44927883/article/details/117750732

在IDEA中,有mybatis log plgn(收费) 或mybatis log(免费)等插件实现了此功能,大家在IDE中可以使用插件方式实现,在未启动IDEA时,可以通过网页方式解析SQL,两者可以互相补充。喜欢本文,请关注原作者,对原作者收藏和点赞。如果原作者介意请联系删除,谢谢

标签:statementStr,sql,parametersStr,var,textVa,SQL,mybatis,日志
From: https://www.cnblogs.com/qipaoxian/p/16795490.html

相关文章

  • Linux 文件系统与日志分析
    导图1.inode表结构每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(metadata)元数据是存放在inode(indexnode)表中。inode表中有很多条记录组成,第一......
  • Linux的日志文件简介
    一、日志文件1.1、日志文件介绍日志文件是用于记录系统操作事件的记录文件或文件集合,操作系统有操作系统日志文件,数据库系统有数据库系统日志文件,等等。日志文件内容包......
  • 在线安装mysql8.0
    wget-i-chttps://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpmyum-yinstallmysql80-community-release-el7-1.noarch.rpm##如果不加--nogpgcheck......
  • postgresql/lightdb ctas与no space available error
    ctas实现逻辑>log_newpageC++(gdb)_bt_blwritepageC++(gdb)_bt_uppershutdownC++(gdb)_bt_loadC++(gdb)_bt_leafbuild......
  • 如何解决Navicat连接Mysql数据库时出现1251报错问题
    如何解决Navicat连接Mysql数据库时出现1251报错问题​​一、前言​​​​二、错误信息​​​​三、分析问题​​​​四、解决方法​​一、前言二、错误信息  用Navicat软......
  • MySQL数据库创建
    CREATEDATABASECOOKIE--数据库名字ON(NAME=cookie_dat',--逻辑名称FILENAME='C\data\cookie_dat.mdf'--物理名称SIZE=200--文件初始大小(单位MB)MAXSIZE=1024--......
  • Mybatis拦截器实现带参数SQL语句打印
    前言在我们工作实际项目中,常常遇到使用Mybatis作为ORM框架,在使用的过程中,一般都会开启日志的打印功能,这样在控制台就会输出执行的SQL,定位SQL问题也是比较方便的。但是,我们......
  • sqlserver 数据库查看备份还原进度
    记录下经常要用的sqlSELECTDB_NAME(er.[database_id])[DatabaseName],er.[command]AS[CommandType],er.[percent_complete],er.start_time,CONVERT(DECIM......
  • Java Mysql客户端 Mybatis-Plus 4步快速接入
    1,pom增加依赖<dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>......
  • 基于ajax和mysql的楼市销售系统设计与实现-计算机毕业设计源码+LW文档
    开发语言:Java框架:ssmJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏......