
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 通过拦截器打印完整的sql语句以及执行结果操作
开发过程中,如果使用mybatis做为ORM框架,经常需要打印出完整的sql语句以及执行的结果做为参考. 虽然mybatis结合日志框架可以做到,但打印出来的通常都是sql和参数分开的. 有时我们需要调试这条sql的时候,就需要把参数填进去,这样未免有些浪费时间. 此时我们可以通过实现mybatis拦截器来做到打印带参数的完整的sql,以及结果通过json输出到控制台. 直接看代码和使用方法吧: MyBatis拦截器打印不带问号的完整sql语句拦截器 import java.text.DateF
-
springboot+mybatis配置控制台打印sql日志的方法
此处项目环境为简单的springboot+mybatis环境.可查看到上一篇文章搭建的简单springboot+mybatis的项目 想要控制台打印sql日志. 只需要在resources目录下添加logback.xml文件即可 logback内容如下.直接复制即可 <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日
-
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的时候,就怎么都是找不到,后来设置的源码找到灵感,发现可
-
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正常结合运行,但在打印的日志中动态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
-
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
-
springboot整合mybatis将sql打印到日志的实例详解
在前台请求数据的时候,sql语句一直都是打印到控制台的,有一个想法就是想让它打印到日志里,该如何做呢? 见下面的mybatis配置文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-
随机推荐
- Javascript 面向对象(三)接口代码
- angular directive的简单使用总结
- VB使用shell函数打开外部exe程序的实现方法
- JavaScript高级程序设计(第3版)学习笔记2 js基础语法
- java编写创建数据库和表的程序
- python虚拟环境virualenv的安装与使用
- MVC4制作网站教程第二章 部分用户功能实现代码
- 部署维护docker环境的详细教程
- 解析如何用php screw加密php源代码
- Ruby on Rails中的ActiveResource使用详解
- Powershell小技巧之获取字符串的行数
- 根据sql脚本修改数据库表结构的几种解决方案
- jQuery Validate表单验证深入学习
- 预加载css或javascript的js代码
- C#实现将浮点数表示的货币数量以汉字大写形式输出的方法
- Android 5.0最应该实现的8个期望
- python机器学习实战之K均值聚类
- 分析JAVA中几种常用的RPC框架
- 在python tkinter中Canvas实现进度条显示的方法
- PyQt5 窗口切换与自定义对话框的实例
其他
- rxifread怎么读heic
- yii2 新特性 队列
- pycharm怎么连接linux服务器
- 如何在IDEA配置GC
- vueLogo 字体怎么引入
- tab echar宽高时效
- matlab 散点绘制坐标图范例
- pandas dataframe转array
- 易语言写入文件非指定文件夹
- r语言im函数是什么意思
- layui.echarts 双层饼图
- vue引用其他vue文件不显示
- 图片上有多个目标怎么学习
- Mybatis使用bind拼接时分秒
- vue动态绑定后台图片
- pycharm vue.js插件
- vue中src如何动态加载图片
- python3 doc 转换成 pdf
- 怎样能让flash不过期
- oracle 触发器变量复制