SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作

 更新时间:2020年12月02日 10:22:25   作者:WenL--  
这篇文章主要介绍了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执行时的实际参数值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MyBatis的五种批量查询实例总结

    MyBatis的五种批量查询实例总结

    为了提高代码的执行效率,我们有时需要采用批量查询的查询方法,下面这篇文章主要给大家介绍了关于MyBatis的五种批量查询的相关资料,需要的朋友可以参考下
    2023-02-02
  • SpringBoot中@Autowired爆红原理分析及解决

    SpringBoot中@Autowired爆红原理分析及解决

    这篇文章主要介绍了SpringBoot中@Autowired爆红原理分析及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java求两集合的交集、并集、差集实例

    Java求两集合的交集、并集、差集实例

    这篇文章主要介绍了Java求两集合的交集、并集、差集实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Hadoop MultipleOutputs输出到多个文件中的实现方法

    Hadoop MultipleOutputs输出到多个文件中的实现方法

    这篇文章主要介绍了 Hadoop MultipleOutputs输出到多个文件中的实现方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • Mybatis查询记录条数的实例代码

    Mybatis查询记录条数的实例代码

    这篇文章主要介绍了Mybatis查询记录条数的实例代码,需要的朋友可以参考下
    2017-08-08
  • SpringBoot发送邮件功能 验证码5分钟过期

    SpringBoot发送邮件功能 验证码5分钟过期

    这篇文章主要为大家详细介绍了SpringBoot发送邮件功能,验证码5分钟过期,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 深入解析Java中volatile关键字的作用

    深入解析Java中volatile关键字的作用

    Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制
    2013-09-09
  • Mybatis加载策略的实现方法

    Mybatis加载策略的实现方法

    Mybatis中一对一,一对多,多对多关系的配置及实现,可以实现对象的关联查询。实际开发过程中很多时候我们并不需要总是在加载用户信息时就一定要加载他的订单信息,这是就是我们常说的延时加载,本文给大家详细介绍实现方法,一起看看吧
    2022-02-02
  • Java 垃圾回收机制详解及实例代码

    Java 垃圾回收机制详解及实例代码

    这篇文章主要介绍了 Java 垃圾回收机制详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • Mybatis-plus多租户项目实战进阶指南

    Mybatis-plus多租户项目实战进阶指南

    多租户是一种软件架构技术,在多用户的环境下共有同一套系统,并且要注意数据之间的隔离性,下面这篇文章主要给大家介绍了关于Mybatis-plus多租户项目实战进阶的相关资料,需要的朋友可以参考下
    2022-02-02

最新评论