时间:2021-05-20
问题描述
在开发过程中,默认配置下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执行时的实际参数值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在SpringBoot集成Mybatis的项目中,如果出现SQL语句执行问题,我们需要进行排查。此时就需要打印对应的SQL语句,那么该如何操作才能正常打印出对应
此处项目环境为简单的springboot+mybatis环境。可查看到上一篇文章搭建的简单springboot+mybatis的项目想要控制台打印sql日志。只
一、简介Mybatis-Plus是一款MyBatis动态sql自动注入crud简化增删改查操作中间件。启动加载XML配置时注入mybatis单表动态SQL操作,
mybatis-log-plugin:可以在控制台打印执行的SQL,具体自行百度本文章只是抛砖,插件构建请各位百度IDEA构建插件。一.背景在IDEA2020使
序言:此前,我们主要通过XML来书写SQL和填补对象映射关系。在SpringBoot中我们可以通过注解来快速编写SQL并实现数据访问。(仅需配置:mybatis