文章目录

  • 前言
  • MybatisLogFormat
    • 选项一
    • 选项二
    • 缺点
  • Mybatis Log Free
  • 总结

前言

各位精通CRUD的老司机,相信大家在工作中mybatis或者mybatisplus使用的肯定是比较多的,那么大家或多或少都应该对下面的行为感到熟悉。我们排查问题的时候,从日志中复制出来的SQL参数位置都是使用?占位的,我们需要将一个一个的参数手动赋值到?的位置,随后该SQL才能放到数据库中正确执行。对于这样的操作,一次两次尚可接受,多了就会让人对于这种机械性的操作很是反感。那么,对于这个问题有没有比较好的解决方案呢?答案还真有,今天就给大家推荐两款不错的IDEA插件,这两款插件笔者也都使用过。

注:通常mybaits日志打印大概如下图示,一行是?占位的SQL,一行是各个参数值

MybatisLogFormat

这款插件可在IDEA的插件市场中搜索到并直接安装。使用的时候直接选中SQL行以及参数行,就是上面图示中红框圈出来的两行,鼠标点击右键,此时会弹出来一个对话框。

选项一

点击这个选项,会在右下角弹出一个小框,同时有个copy的按钮供你点击,一点击参数化的SQL就被复制到了你的剪切板,不过不是美化之后的格式。

update `t_student` set `name` = case when `id` = 1 then 张三 when `id` = 2 then 李四 when `id` = 3 then 王五 when `id` = 4 then 赵六 end, `age` = case when `id` = 1 then 40 when `id` = 2 then 34 when `id` = 3 then 55 when `id` = 4 then 76 end where `id` in ( 1 , 2 , 3 , 4 )

选项二

点击这个选项,参数化后的SQL直接被复制到你的剪切板,而且是美化之后的格式。

UPDATE `t_student`
SET `name` = CASE WHEN `id` = 1 THEN 张三WHEN `id` = 2 THEN 李四WHEN `id` = 3 THEN 王五WHEN `id` = 4 THEN 赵六
END, `age` = CASE WHEN `id` = 1 THEN 40WHEN `id` = 2 THEN 34WHEN `id` = 3 THEN 55WHEN `id` = 4 THEN 76
END
WHERE `id` IN (1, 2, 3, 4)

缺点

好像对字符串的支持不太完美,没有给字符串值加上 ’ 号,需要我们自己补全否则会报错。

Mybatis Log Free

这款插件可在IDEA的插件市场中搜索到并直接安装。使用的时候先在console控制台鼠标点击右键,在弹出的对话框中选择Mybatis Log Plugin选项,此时会出现Mybatis Log的专属控制台,之后程序运行中的参数化SQL就会直接打印在专属控制台中。


我们运行测试程序,观察出现在控制台中的SQL。


由此可见,参数化SQL被正确打印,而且对于不同字段类型处理正确,比如字符串值自动用 ’ 进行包裹,SQL可直接放到数据库中执行,非常完美。

总结

  1. Mybatis Log Free插件和MybatisLogFormat插件都能起到类似的作用,简化我们的工作。
  2. Mybatis Log Free插件似乎对于参数的处理更准确一点,当然也可能是我不太会用MybatisLogFormat插件,所以我现在就是使用Mybatis Log Free插件多一些。
  3. 自测Mybatis Log Free插件对于mybatisplus同样适用。

mybatis日志打印大杀器相关推荐

  1. clodeblocks debug断点调试_Intellij IDEA高阶DEBUG大杀器

    前言 目前工作中由于环境复杂等客观因素,无法在本地启动项目进行 Trouble Shooting,需要打开测试环境的 DEBUG 端口,进行远程调试.为了不影响其他用户同时使用测试环境以及相关系统的正 ...

  2. 使用docker-compose 大杀器来部署服务 - 上

    我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 term 一顿操作会很拉风,但是高手很不屑!在高手眼里 ...

  3. 使用docker-compose 大杀器来部署服务 上

    我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 term 一顿操作会很拉风,但是高手很不屑!在高手眼里 ...

  4. 使用docker-compose 大杀器来部署服务

    我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 term 一顿操作会很拉风,但是高手很不屑!在高手眼里 ...

  5. 使用docker-compose 大杀器来部署服务 上

    原文:https://www.cnblogs.com/neptunemoon/p/6512121.html 使用docker-compose 大杀器来部署服务 上 我们都听过或者用过 docker,然 ...

  6. [NewLife.XCode]反向工程(自动建表建库大杀器)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...

  7. xcode修改时间后就要重新编译_[NewLife.XCode]反向工程(自动建表建库大杀器)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...

  8. 时间序列(五): 大杀器: 循环神经网络

    上几节讲了一些时间序列的基本概念, 大家总感觉不那么的'智能', 与现在的人工智能的总那么的... 不太搭边. 先不管以上'感觉'对不对, 今天插队与大家分享一个处理时间序列的'大杀器' - 循环神经 ...

  9. 并行化-你的高并发大杀器

    作者:咖啡拿铁,现就职于美团点评,后端研发 来自:公众号咖啡拿铁(ID:code_3092860495) 1.前言 想必热爱游戏的同学小时候,都幻想过要是自己要是能像鸣人那样会多重影分身之术,就能一边 ...

最新文章

  1. 把PPT做漂亮点真的有用,研究证明图表美观增加可信度,作者:还会影响论文引用和通过率...
  2. 魏少军谈AI芯片热潮和架构创新 透露清华Thinker芯片将独立融资
  3. RHCE 学习笔记(20) ACL
  4. python收入波动告警分析_使用Python/Pandas分析告警日志数据
  5. jzoj1371-假期【RMQ】
  6. jquery 文字轮播
  7. 敏捷开发相关概念——学习笔记
  8. 移动通信原理B-------例题解答3
  9. 苹果电脑win10蓝牙音响卡顿_Macbook Pro 2017安装win10以后蓝牙鼠标卡顿
  10. 基于D-S证据理论的数据融合算法的研究
  11. C#+Winform用ReportViewer控件制作报表
  12. 论文_毕业设计复现机器学习模型案例大本营(收藏)
  13. html5音效,HTML5之Audio(六)—— 3D音效
  14. HFSS激励类型----电流源激励
  15. MySQL的SQL基础(五)
  16. 六顶思考帽(edward de bono)
  17. 信息共享的记忆被囊群算法
  18. 这部手机爆火了,网友:新一代自拍神器?
  19. 生活随记 - 一个数据库工程师朋友的困惑
  20. 获取网页标题、关键字、页面ip地址、文本等详细信息接口说明

热门文章

  1. 使用Webpack打包Typescript ES6项目(转ES5)
  2. k8s==安装仪表盘,用仪表盘部署nginx
  3. matlab 悬架,基于MATLAB的汽车悬架仿真研究.doc
  4. 推荐一款开源的音乐下载神器,8个平台VIP任你选
  5. linux那种压缩速度最快,关于linux:速度快性能好压缩神器-zstd
  6. ⭐手把手教你魔改360,再也不怕360广告多了!⭐
  7. Unity实现模型点击
  8. 为什么序列存在单位根是非平稳时间序列?
  9. java的下拉框的设置默认值,html下拉选项属性 html下拉框怎么设置默认值?
  10. 吴恩达Deeplearning第二课代码bug修正大全