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

 更新时间:2023年04月04日 09:41:57   作者:凡人歌者徐  
这篇文章主要给大家推荐介绍了关于mybatis日志打印的两款IDEA插件,文中通过图文以及实例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友可以参考下

前言

各位精通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 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就会直接打印在专属控制台中。

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

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

总结

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

到此这篇关于mybatis日志打印的两款IDEA插件推荐的文章就介绍到这了,更多相关mybatis日志打印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Java的ArrayList数组自动扩容机制

    关于Java的ArrayList数组自动扩容机制

    这篇文章主要介绍了关于Java的ArrayList数组自动扩容机制,ArrayList底层是基于数组实现的,是一个动态数组,自动扩容,不是线程安全的,只能用在单线程环境下,需要的朋友可以参考下
    2023-05-05
  • 浅谈常用Java数据库连接池(小结)

    浅谈常用Java数据库连接池(小结)

    这篇文章主要介绍了浅谈常用Java数据库连接池(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 浅谈Java中各种修饰符与访问修饰符的说明

    浅谈Java中各种修饰符与访问修饰符的说明

    下面小编就为大家带来一篇浅谈Java中各种修饰符与访问修饰符的说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • springMVC利用FastJson接口返回json数据相关配置详解

    springMVC利用FastJson接口返回json数据相关配置详解

    本篇文章主要介绍了springMVC利用FastJson接口返回json数据相关配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • java过滤特殊字符操作(xss攻击解决方案)

    java过滤特殊字符操作(xss攻击解决方案)

    这篇文章主要介绍了java过滤特殊字符操作(xss攻击解决方案),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot实现短信验证码校验方法思路详解

    SpringBoot实现短信验证码校验方法思路详解

    最近做项目遇到这样的需求,前端是基于BootStrap,html代码中有BootStrap样式实现的,具体后台实现代码大家通过本文一起学习吧
    2017-08-08
  • java教学笔记之对象的创建与销毁

    java教学笔记之对象的创建与销毁

    面向对象的编程语言使程序能够直观的反应客观世界的本来面目,并且使软件开发人员能够运用人类认识事物所采用的一般思维方法进行软件开发,是当今计算机领域中软件开发和应用的主流技术。
    2016-01-01
  • Jmeter对响应数据实现断言代码实例

    Jmeter对响应数据实现断言代码实例

    这篇文章主要介绍了Jmeter对响应数据实现断言代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Maven重复依赖问题解决(同一个jar多个版本)

    Maven重复依赖问题解决(同一个jar多个版本)

    本文主要介绍了Maven重复依赖问题解决(同一个jar多个版本),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java Autowired注解深入分析

    Java Autowired注解深入分析

    @Autowired注解是Spring中非常重要且常见的,接下来就简要的介绍一下它的用法。@Autowired默认是通过set方法,按照类型自动装配JavaBean,set方法可省略不写,它主要是修饰在成员变量上
    2023-01-01

最新评论