当前位置: 首页 > news >正文

开发工具分享 - Mybatis SQL日志格式化H5

目录

  • 一、 序言
  • 二、代码示例
  • 三、部署至Nginx

一、 序言

平时通过IDEA开发,可以直接装相关MybatisLogFormat的插件直接对控制台里的Mybatis SQL日志进行格式化。一旦离开本地环境,到了测试或者线上,就得自己手动拼参数了。

简单的SQL还好,复杂点或者查询条件多的SQL简直让人怀疑人生,今天分享一个简单的SQL格式化H5,从此解放拼接的双手。


二、代码示例

<!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>

三、部署至Nginx

接下来我们直接将该静态文件扔到Nginx中就好了,部署也很简单,方便易用,配置如下:

location /h5/sql-formatter {alias h5/mybatis-log-formatter;
}

备注:我部署的文件路径为/opt/appl/nginx/h5/mybatis-log-formatter

打开浏览器,访问http://localhost/h5/sql-formatter/sql.html,点击解析SQL就可以解析出拼接好条件的SQL,如下:
在这里插入图片描述
在这里插入图片描述

相关文章:

开发工具分享 - Mybatis SQL日志格式化H5

目录 一、 序言二、代码示例三、部署至Nginx 一、 序言 平时通过IDEA开发&#xff0c;可以直接装相关MybatisLogFormat的插件直接对控制台里的Mybatis SQL日志进行格式化。一旦离开本地环境&#xff0c;到了测试或者线上&#xff0c;就得自己手动拼参数了。 简单的SQL还好&am…...

好用的办公软件有哪些

日常的工作难免和各种各样的软件打交道&#xff0c;除了传统的Office三件套&#xff0c;小编日常还在用着其他的办公软件&#xff0c;借此跟各位分享其中比较好用、堪称办公神器的8款软件&#xff01; 1.WPS office 2.office2007 3.EasyConnect 4.ToDesk 5.Photoshop 6.A…...

C#中Abstract、Virtual和Override的使用方法

在C#中&#xff0c;abstract、virtual和override是用于处理类和方法的三个重要关键字&#xff0c;它们的用途和用法如下&#xff1a; Abstract&#xff08;抽象&#xff09; 抽象方法是一种只有声明而没有实现的方法。抽象方法只定义了方法的名称、返回类型和参数列表&#x…...

mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等

雷蛇官网只给了win版本驱动 mac版本驱动到这里下载: GitHub - 1kc/razer-macos: Color effects manager for Razer devices for macOS. Supports High Sierra (10.13) to Monterey (12.0). Made by the community, based on openrazer. 安装后会显示开发者不明,请丢弃到垃圾桶.…...

Oracle 19c OCM讲义课程:应用SQL执行计划基线的案例

使用SQL执行计划基线可以保证SQL的性能不下降&#xff0c;但实际生产中默认没有开启&#xff0c;这里是姚远老师在给OCM的学员授课中关于SQL执行计划基线的一个案例&#xff0c;大家可以借鉴一下。 关于号主&#xff0c;姚远&#xff1a; Oracle ACE&#xff08;Oracle和MyS…...

什么是 EDI 857?

EDI 857 的中文含义是装运和账单通知&#xff0c;主要用于供应商传递装运信息和提供采购发票。一个 EDI 857 需要包含与某个具体订单相关联的必要的装运和发票信息&#xff0c;主要包含的业务信息如下&#xff1a; 采购订单编号供应商和买方联系信息产品数量、价格以及诸如 UP…...

OJ项目【登录】——验证码、失败登录多次账户冻结、用户密码加密,我是如何实现的?

目录 前言 1、验证码 1.1、引入pom 1.2、前端核心代码 1.3、后端核心代码 2、账户冻结 2.1、思路&#xff1a; 2.2、核心代码示例&#xff1a; 3、密码加密——加盐算法 3.1、思路&#xff1a; 3.2、代码实现示例&#xff1a; 4、小结&#xff1a;展示我的项目 4…...

js鼠标点击添加图标并获取图标的坐标值

给这个图片添加摄像头图标&#xff0c;并获取图标的坐标值&#xff0c;也就是图标的css样式是positon:absolute,获取left和top的值。 图片1 思路是这样的&#xff0c;获取这里的长度&#xff0c; 图片2 1.鼠标点击时距浏览器的左边距离和上边距离&#xff0c;相当于(0,0)坐标 …...

How to add a jar to a project in eclipse?

Project -> Properties -> Java Build Path -> Libraries -> Add External JARs...

动手实现H5仿原生app前进后退切换效果

动手实现H5仿原生app前进后退切换效果 前言 最近在优化H5页面&#xff0c;我注意到当开发完成的移动端H5页面嵌入到微信小程序或者原生app中时&#xff0c;当触发页面路由切换会与原生app看上去有点格格不入&#xff0c;因为H5页面<router-view>切换路由时是直接替换了…...

【标准化封装 SOT系列 】 D SOT-323 SOT-363

〇、关键词 SC70 。 一、D部分 SOT-323 SOT-363 这个应该叫SC-70可能更合适&#xff0c;典型特征 pin 间距 0.65mm ; body size 2.0mm1.25mm 这一节很像SOT-23&#xff0c;即A部分&#xff0c;因此也是最容易被混淆的。 二、SC70-3 / -5/ -6 鉴于此&#xff0c;封装最好给…...

软件测试肖sir__python之ui自动化实战和讲解03

python之ui自动化实战和讲解...

Kafka序列化反序列化解析、kafka schema

Kafka序列化反序列化解析、kafka schema。 kafka有自己的rpc协议,即nio bytebuf中的数据格式,详见之前的kafka相关介绍的文章。这里我们来看一下大家常用,有时又疑惑的序列化反序列化,对应rpc协议中的records,kafka叫Serdes,实际上也是字面上的意思serialize and deseri…...

谷歌浏览器中如何审查隐藏的元素

谷歌浏览器中如何审查隐藏的元素 方法1&#xff1a; 打开控制台 先鼠标移上先显示出来 快捷键按 CtrlShiftC&#xff0c;只能简单查看宽高&#xff0c;做不到复杂的的样式查询 方法2&#xff1a; 在控制台输入一个以下代码, 并保留光标在控制台闪烁&#xff0c;鼠标移上去显示…...

【vue】使用less报错:显示this.getOptions is not a function

在vue-cli中使用 lang“less” 时报错&#xff1a; Module build failed: TypeError: this.getOptions is not a function at Object.lessLoader 原因&#xff1a;版本过高所致&#xff0c;所用版本为 解决&#xff1a;降低版本&#xff1a;npm install less-loader4.1.0 --s…...

代码随想录第48天 | ● 739. 每日温度 ● 496.下一个更大元素 I

739. 每日温度 /*** param {number[]} temperatures* return {number[]}*/ var dailyTemperatures function(temperatures) {const ntemperatures.lengthconst resArray(n).fill(0)const stack[] // 递增栈&#xff1a;用于存储元素右面第一个比他大的元素下标stack.push(0…...

团购页面.

<!DOCTYPE html> <html><head><title>团购</title><meta http-equiv"content-type" content"text/html; charsetutf-8"/><meta name"apple-mobile-web-app-capable" content"yes"/><lin…...

linux-系统日志/var/log/简介

日志在排查文件的时候至关重要&#xff0c;在Linux上一般跟系统相关的日志默认都会放到/var/log下面。 1、/var/log/boot.log 一般包含系统启动时的日志&#xff0c;包括自启动的服务。 2、/var/log/btmp 记录所有失败登录信息。非文本文件&#xff0c;可以使用last -f /va…...

2022最新版-李宏毅机器学习深度学习课程-P26RNN-2

一、RNN网络结构 与时间有关的反向传播&#xff08;每次不同&#xff09; 损失函数 实验其实不容易跑&#xff0c;因为他的损失函数曲线幅度很大 画出来差不多是这个样子。突然一下升高是因为从右到左碰到陡峭的地方梯度一下变大了&#xff0c;所以弹回去了。 原作者在训练时…...

docker 配置mongoDB

## 拉取镜像 docker pull mongo## 设置默认账号密码 test:test 默认数据 test docker run -d --name mongo-container -e MONGO_INITDB_ROOT_USERNAMEtest -e MONGO_INITDB_ROOT_PASSWORDtest -e MONGO_INITDB_DATABASEtest -p 27017:27017 mongo...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...