SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作
问题描述
在开发过程中,默认配置下SpringBoot和Mybatis正常结合运行,但在打印的日志中动态sql中的参数位置显示的是?,当sql执行违背预期时不免是因为传到Mapper中sql参数值不正确所导致,这时候如果调试能查看sql执行时占位符处的值,这无疑能让问题展示得更加直观,如何在SpringBoot、Mybatis的框架下使日志中打印出sql执行时获得的实际参数呢?
问题表现

解决办法
在SpringBoot项目中的配置文件application.properties或者bootstrap.properties添加如下内容
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
如果如果文件为yml的格式则在application.yml或者bootstrap.yml文件中添加如下内容
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
效果
配置后效果如下

补充知识:mybatis 显示参数${} #{},${}适用场景 miniui sortField sortOrder
最近配合miniui 排序,发现用${} 可以直接使用 sortField、sortOrder 里面的值进行排序,而用#{} 就不行了
查了下 这两个区别:
1.#{} 传参,sql语句解析会加上"",
例如
select * from report where orgname= #{orgname}, 结果会是 select * fromreport whereorgname= ‘花果山'
2.${} 传参,mybatis不会修改或转义字符串,
select * from report order by ${sortField}, 结果会是 select * fromreport order by orgname.
#{}传参能防止sql注入,mybatis会创建preparedstatement 并以它为背景设置安全的值
使用${field}不应该允许用户输入这些field,或者通常自行转义并检查。
以上这篇SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot中@Autowired爆红原理分析及解决
这篇文章主要介绍了SpringBoot中@Autowired爆红原理分析及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-05-05
Hadoop MultipleOutputs输出到多个文件中的实现方法
这篇文章主要介绍了 Hadoop MultipleOutputs输出到多个文件中的实现方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下2017-10-10


最新评论