mybatis日志打印的两款IDEA插件推荐

作者:凡人歌者徐 时间:2022-01-12 07:55:52 

前言

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

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

mybatis日志打印的两款IDEA插件推荐

MybatisLogFormat

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

mybatis日志打印的两款IDEA插件推荐

选项一

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

mybatis日志打印的两款IDEA插件推荐

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 40
WHEN `id` = 2 THEN 34
WHEN `id` = 3 THEN 55
WHEN `id` = 4 THEN 76
END
WHERE `id` IN (1, 2, 3, 4)

缺点

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

Mybatis Log Free

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

mybatis日志打印的两款IDEA插件推荐

mybatis日志打印的两款IDEA插件推荐

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

mybatis日志打印的两款IDEA插件推荐

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

总结

  1. Mybatis Log Free插件和MybatisLogFormat插件都能起到类似的作用,简化我们的工作。

  2. Mybatis Log Free插件似乎对于参数的处理更准确一点,当然也可能是我不太会用MybatisLogFormat插件,所以我现在就是使用Mybatis Log Free插件多一些。

  3. 自测Mybatis Log Free插件对于mybatisplus同样适用。

来源:https://blog.csdn.net/carbuser_xl/article/details/127116044

标签:mybatis,日志,打印
0
投稿

猜你喜欢

  • Java实现将类数据逐行写入CSV文件的方法详解

    2023-02-27 17:11:11
  • Java毕业设计实战之药店信息管理系统的实现

    2022-03-07 11:55:37
  • Java利用三目运算符比较三个数字的大小

    2023-04-18 01:20:19
  • java实现图片分割指定大小

    2021-07-02 16:56:34
  • 基于Springboot一个注解搞定数据字典的实践方案

    2022-12-23 01:12:38
  • JAVA像SQL一样对List对象集合进行排序

    2023-11-01 12:36:24
  • SpringCloud如何使用Eureka实现服务之间的传递数据

    2022-02-17 18:47:37
  • java实现微信扫码支付功能

    2023-11-09 18:38:08
  • 【Redis缓存机制】详解Java连接Redis_Jedis_事务

    2023-05-23 19:59:55
  • MybatisPlus多表连接查询的问题及解决方案

    2023-11-25 22:09:06
  • 阿里nacos+springboot+dubbo2.7.3统一处理异常的两种方式

    2022-12-05 03:50:25
  • 基于WPF实现简单的文件夹比较工具

    2023-11-15 16:08:34
  • SpringBoot访问windows共享文件的方法

    2023-11-08 13:37:13
  • java 配置MyEclipse Maven环境具体实现步骤

    2021-07-31 04:12:23
  • 重温C# clr 笔记总结

    2023-06-22 02:24:30
  • c# AcceptEx与完成端口(IOCP)结合的示例

    2023-07-29 01:46:24
  • 一文带你了解Java中的函数式编程

    2022-08-02 07:32:29
  • java插入排序 Insert sort实例

    2023-07-21 07:07:37
  • java使用RandomAccessFile类基于指针读写文件实例代码

    2021-07-29 17:45:45
  • 实例讲述Java IO文件复制

    2023-01-30 17:25:32
  • asp之家 软件编程 m.aspxhome.com