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+mybatis-plus 两种方式打印sql语句的方法
1.注解方式,yml文件配置上以下就可以直接使用 mybatis-plus: mapper-locations: classpath:mapper/*.xml configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 2.这一种网上没有,搜过好多资料都没有,我是配置多数据源,所以是在代码中写的config那么yml文件就是失效的,只能一个一个配置,到了打印sql的时候,就怎么都是找不到,后来设置的源码找到灵感,发现可
-
mybatis 通过拦截器打印完整的sql语句以及执行结果操作
开发过程中,如果使用mybatis做为ORM框架,经常需要打印出完整的sql语句以及执行的结果做为参考. 虽然mybatis结合日志框架可以做到,但打印出来的通常都是sql和参数分开的. 有时我们需要调试这条sql的时候,就需要把参数填进去,这样未免有些浪费时间. 此时我们可以通过实现mybatis拦截器来做到打印带参数的完整的sql,以及结果通过json输出到控制台. 直接看代码和使用方法吧: MyBatis拦截器打印不带问号的完整sql语句拦截器 import java.text.DateF
-
springboot 配置日志 打印不出来sql的解决方法
今天整合springboot2 + mybatis + logback 遇到了在日志中sql打印不出来的坑,在网上找了好久,都不是我遇到的问题,这里吐槽一下下现在的博客质量,好多都是抄袭的,也没有标注转载. 先说下要将sql打印到日志的配置 1.在mybatis.xml配置中增加以下配置 <!--指定 MyBatis 增加到日志名称的前缀.--> <setting name="logPrefix" value="m-shop-mybatis-sql.&quo
-
springboot+mybatis配置控制台打印sql日志的方法
此处项目环境为简单的springboot+mybatis环境.可查看到上一篇文章搭建的简单springboot+mybatis的项目 想要控制台打印sql日志. 只需要在resources目录下添加logback.xml文件即可 logback内容如下.直接复制即可 <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日
-
SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作
问题描述 在开发过程中,默认配置下SpringBoot和Mybatis正常结合运行,但在打印的日志中动态sql中的参数位置显示的是?,当sql执行违背预期时不免是因为传到Mapper中sql参数值不正确所导致,这时候如果调试能查看sql执行时占位符处的值,这无疑能让问题展示得更加直观,如何在SpringBoot.Mybatis的框架下使日志中打印出sql执行时获得的实际参数呢? 问题表现 解决办法 在SpringBoot项目中的配置文件application.properties或者bootst
-
mybatis打印SQL,并显示参数的实例
在maven的pom.xml里面添加一下依赖: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.2.4.RELEASE</spring.version> <version.slf4j>1.7.6</version.slf4j> <version.logback>1.
-
springboot下mybatis-plus如何打印sql日志和参数到日志文件
最近在使用springboot过程中用到了mybatis-plus ,springboot版本是2.3.1.RELEASE,mybatis-plus 版本3.2.0. <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dep
-
解读springboot配置mybatis的sql执行超时时间(mysql)
目录 一.yml全局配置 二.java配置类配置 总结 当某些sql因为不知名原因堵塞时,为了不影响后台服务运行,想要给sql增加执行时间限制,超时后就抛异常,保证后台线程不会因为sql堵塞而堵塞. 一.yml全局配置 单数据源可以,多数据源时会失效 二.java配置类配置 成功抛出超时异常. import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.Drui
-
Oracle基础多条sql执行在中间的语句出现错误时的控制方式
多条sql执行时如果在中间的语句出现错误,后续会不会直接执行,如何进行设定,以及其他数据库诸如Mysql是如何对应的,这篇文章将会进行简单的整理和说明. 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm 多行语句的正常执行 对上篇文章创建的两个字段的学生信息表,正常添加三条数据,详细如下: # sqlplus system/liumiao123@XE <<EOF > desc
-
Mybatis 实现打印sql语句的代码
mybatis本身没有提供日志的实现,引入的是第三方组件.mybatis支持多个第三方日志插件,优先级由低到高为slf4J.commonsLoging.Log4J2.Log4J和JdkLog. mybatis中有一个LogFactory,获取log的工厂类,在工程类中可以回去对应的日志实现.分析工程类,可以发现mybatis如何来选择log public static Log getLog(String logger) { try { return logConstructor.newInsta
-
springboot 中整合mybatis多数据源不使用JPA
目录 前言: 1 创建一个springboot项目 项目创建成功了,那么开始说下整合mybatis 上面的配置可以直接使用 如果上面的配置都完成的话那么我们来自动生成一下 在下图两个数据源完全生成好后的目录结构 前言: 小伙伴说能不能用springboot整合一下mybatis多数据源不使用JPA进行数据库连接操作.那么说干就干 1 创建一个springboot项目 流程就不介绍了,按图操作即可 创建项目后可能会发现,这个项目展示的有些不对劲啊,java类前面还有个小J号,这是由于maven包还
-
SpringBoot项目的logback日志配置(包括打印mybatis的sql语句)
关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细) 我在这就开门见山直接介绍我们项目日志的配置使用吧!~ 1.基本介绍 默认情况下,Spring Boot项目就会用Logback来记录日志,并用INFO级别输出到控制台.如下图: 实际开发中我们不需要直接添加logback日志依赖. 你会发现 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 lo
随机推荐
- Lua判断变量是否为数字、字符串是否可以转换为数字等
- Vue实现typeahead组件功能(非常靠谱)
- 如何理解Vue的.sync修饰符的使用
- Win2008 Server下IIS配置安装教程
- Oracle中rank,over partition函数的使用方法
- Python使用MD5加密字符串示例
- python批量下载图片的三种方法
- Python中的对象,方法,类,实例,函数用法分析
- javascript编程起步(第七课)
- Mysql 建库建表技巧分享
- Stop SQL Server
- js读写cookie实现一个底部广告浮层效果的两种方法
- JS中使用apply、bind实现为函数或者类传入动态个数的参数
- javascript创建和存储cookie示例
- 浅谈C/C++ 语言中的表达式求值
- php对大文件进行读取操作的实现代码
- Android与单片机通信常用数据转换方法总结
- SpringBoot启动报错Failed to determine a suitable driver class
- vue 中swiper的使用教程
- Python子类继承父类构造函数详解