在项目中,通常会配置log4j2等来输出mybatis的sql,为了防止sql注入问题,我们通常会使用#{}的方式来注入sql的参数,这会导致我们拿到的sql日志是没替换参数的,参数都是通过问号?占位符的方式。当我们需要拿下sql去数据库客户端执行的时候,就会有一个困扰:需要把一个个问号?替换成对应的参数,假设在insert的sql中插入一个有几十个字段的表,那将会是一场噩梦。那有没有办法在日志文件记录完整的sql呢?详细请看下面步骤。
log4j2配置修改
关闭log4j2打印mybatis的sql配置,如果本来就没开启,那不需要。

配置日志开关
在springboot的yml文件配置变量logging.sql.enable=true,对拦截器做开关控制。

添加拦截器插件
// 采用自定义拦截器打印sql日志
sessionFactory.setPlugins(new Interceptor[]{this.getSqlLogInterceptor()});
