Mybatis inteceptor SQL计时以及语句输出 比较

    最近有需求需要在控制台打印出SQL的执行时间,听到需求就来到了baidu。随手一搜,好家伙,这个功能已经被提过很多次了,当然要求借鉴网上的解决方案去解决自己的问题。自己在整个功能期,一共借鉴了三种书写方式,下面写个文章自己记录一下此次的学习过程。

 way1:不得不看的知乎大佬的回答 https://zhuanlan.zhihu.com/p/97243186

人的名,树的影,知乎的回答非常的nice,说了三种常用的方式进行拦截输出sql的执行时间,本次的解决方案是第二种,参考源码后将测试跑通,和预期注释的效果都一致。自己还修改了 sql的字符长度等参数,效果非常的好。但是交东西的时候没有过,因为这是运行时了,执行的sql有参数,需求方need 参数。

 

way2: 手动补参数法 https://www.cnblogs.com/xrq730/p/6972268.html

这个代码首先相比于第一个对于sql语句补参数有了相对的深入 相比于网上的抄来抄去搞的很多网页的第三种解决方案,我很尊重这个答案,我不知道他代码后面的几个方法(处理map等特殊情况)是自己写的还是参考mybatis源码写的,写的解决方法非常的ok,对于其中的细节,建议直接参考他的博文,内容全是他手写的,确实可以学到很多的东西。

 

说完了优点,需要说一下最终选择的way3的原因,他对于补参数覆盖面不够全面,嵌套子循环中的参数方法中补不了,最终放弃了这种补参数的方法。

 

way3: 利用mybatis源码中的方法进行补参数 (随便粘一个链接吧 搜这个关键字多个都是这种解决方案https://blog.csdn.net/qq_35275233/article/details/103324944

 第一个写这个的人儿,不知道是谁,但是是个mybatis源码大神,他填充参数的方式利用的是 boundSql.getParameterObject() 获取参数列表和 MetaObject 对象处理bean,collection,map的特殊情况。最终完成补参数的情形。自己目前的理解还不够深入,其他的一些原生元素没法将,大家自己看他们的方案和源码。

 

总:

way1懂了,way2看了部分,way3一知半解,此部分的知识后期肯定还有接着遇到,继续学习。

然后,学习这块的时候,有两个地方可以分享给看到这个帖子,一个是 jdbc中有一些补参的功能和日志打印,在baseJdbcLogger,可以打印 sql,parm,result 没有拼在一起,利用字符串方式拼接的。 其次是mybatis 中文源码学习,有本书上提供了地址,https://github.com/yeecode/MyBatisCN  参考学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值