(请参考版本2 ,因为该版本有bug,必须要配置mybatis的日志logimp,否则会报错.
)
方法:通过插件拦截StatementHandler的parameterize方法,在StatementHandler对象调用parameterize方法设置参数后,就可以获取完整的sql参数
package com.glsys.mybatis3.interceptor; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Statement; import java.util.Properties; import org.apache.ibatis.executor.ErrorContext; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.logging.jdbc.PreparedStatementLogger; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts; import org.apache.ibatis.plugin.Invocation; import org.apache.ibatis.plugin.Plugin; import org.apache.ibatis.plugin.Signature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Intercepts({ @Signature(type = StatementHandler.class, method = "parameterize", args = {Statement.class}) }) public class SQLErrorContextInterceptor implements Interceptor { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public Object intercept(Invocation invocation) throws Throwable { Object obj=invocation.getArgs()[0]; System.out.println("Before StatementHandler. parameterize()..."); System.out.println("Before sql:"+obj.toString()); invocation.proceed(); System.out.println("Aflter StatementHandler .parameterize()..."); System.out.println("Aflter sql:"+obj.toString()); System.out.println("sql:"+obj.toString()); //方式1:直接使用statment对象的 toString方法 // ErrorContext.instance().sql(obj.toString()); //方式2 : 反射获取PreparedStatementLogger父类的PreparedStatementLogger方法 StatementHandler statementHandler = (StatementHandler) invocation.getTarget(); BoundSql boundSql = statementHandler.getBoundSql(); Object handler=Proxy.getInvocationHandler(obj); PreparedStatementLogger pstLogger=(PreparedStatementLogger)handler; Class clz=pstLogger.getClass().getSuperclass(); Method m=clz.getDeclaredMethod("getParameterValueString"); m.setAccessible(true); String logStr=(String) m.invoke(pstLogger); System.out.println(logStr); ErrorContext.instance().sql( boundSql.getSql()+" parameters:"+logStr); return null; } @Override public Object plugin(Object target) { return Plugin.wrap(target, this); } @Override public void setProperties(Properties properties) { String dialect = properties.getProperty("dialect"); logger.info("mybatis intercept dialect:{}", dialect); } }
相关推荐
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...
非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html
拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你springboot项目中的配置文件,增加如下配置即可 application.yml 配置如下: sql: slow...
Mybatis Log(自动填充sql参数打印到控制台)
mybatis SQL日志解析;查看日志时mybatis打印的日志查询条件以及参数不是拼接好的,想复制对应sql在本地执行时比较麻烦,通过前端编写页面进行日志解析,拼接sql中的问号以及参数变课轻松实现
2021版idea安装MyBatis Log Plugin不可用解决方案,idea安装插件2021idea-mybatis_log_plugin可以打印日志mysql
该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间
mybatis+spring 框架中配置日志中显示sql语句
idea mybatislog 日志打印 打印完整sql
把SQL日志里面的?替换为真正的参数值。 选中要还原的MyBatis日志,右键点击菜单Restore Sql,还原SQL语句. Java接口方法与Mapper xml文件互相跳转。 按钮作用 Text: 从文本内容还原SQL语句 Settings: 导航跳转开关,...
mybatis log plugin离线版本支持idea2020.1把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt...
Mybatis日志中的SQL解析工具(网页版) 说明:复制日志时,必须注意,日志必须包含Preparing:和Parameters:全部内容,而且日志换行格式要保留,不要复制成纯文本,直接ctrl+c即可。
主要介绍了mybatis-plus配置控制台打印完整带参数SQL语句,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
# MybatisLog sql日志 Free-Mybatis 插件
通过Mybatis拦截器自动定位慢SQL并记录日志
springboot整合mybatis和logback 动态打印sql日志 不同包下的日志不同文件输出
mybatis打印日志,后台显示日志信息,直接运行test包下的测试程序,即可在后台查看到日志信息
MyBatis-008-创建SqlSession执行sql语句.avi MyBatis-009-复习第一个例子.avi MyBatis-010-开发常见问题.avi MyBatis-011-三种处理方式.avi MyBatis-012-配置日志.avi MyBatis-013-SqlSessionFactory和SqlSession...
IDEA,mybtis日志打印的包,自动填充参数形成sql,好用,显示好看,每种语句不同颜色, IDEA,mybtis日志打印的包,自动填充参数形成sql,好用,显示好看,每种语句不同颜色, IDEA,mybtis日志打印的包,自动填充参数形成sql,好用...
主要介绍了springboot+mybatis配置控制台打印sql日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧