springboot p6spy 打印完整sql
调试时打印出sql的需求,太正常不过了,mybatis也提供了这样的功能:
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
但它打印的sql里,含有占位符?
==> Preparing: select id, name WHERE id in (?,?,?,?,?,?)
==> Parameters: 1001(String), 1002(String), 1003(String), 1101(String), 1102(String), 1103(String)
<== Columns: ID, NAME
<== Row: 1101, 1101
<== Row: 1102, 1102
<== Row: 1103, 1103
<== Total: 3
不能直接把sql拿出来放在plsql中执行。
p6spy 提供了这样的功能。
官方地址:https://github.com/p6spy/p6spy
之前的版本,需要下载p6spy.jar包,现在有了maven已经不用了。
直接在项目中pom.xml添加gav:
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.7.0</version>
</dependency>
再修改application.yml配置文件即:
spring:
datasource:
url: jdbc:p6spy:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = **)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = **) ))
username: test
password: test
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
注意修改两处:url中jdbc:p6spy**** 和添加driver-class-name即可
再次运行程序,就可以在项目的根目录中,看到生成的日志文件spy.log

如果想把日志输出到控制台的话,需要添加配置文件:spy.properties
在里面只需要写一名句就够了:
appender=com.p6spy.engine.spy.appender.StdoutLogger
运行后如下:

这样的日期肯定接受不了,还需要继续改配置文件了:再加一句:
dateformat=yyyy-MM-dd HH:mm:ss

默认生成的日志文件,有点意思,它生成的两遍sql,一次是带占位符的,一次是正常的sql. 我们把正常的sql直接拿到plsql中可以直接运行。
默认生成的sql没有格式,是一段纯文本,如果想要对它格式化,需要自己动手实现。
springboot p6spy 打印完整sql的更多相关文章
- log4jdbc打印完整SQL
一.log4jdbc简单介绍: log4jdbc是工作在jdbc层的一个日志框架,能够记录SQL及数据库连接执行信息. 一般的SQL日志会把占位符和参数值分开打印,log4jdbc则会记录数据库执行的 ...
- 曹工杂谈--使用mybatis的同学,进来看看怎么在日志打印完整sql吧,在数据库可执行那种
前言 今天新年第一天,给大家拜个年,祝大家新的一年里,技术突突突,头发长长长! 咱们搞技术的,比较直接,那就开始吧.我给大家看看我demo工程的效果(代码下边会给大家的): 技术栈是mybatis/m ...
- laravel 打印完整sql语句
laravel5 用DB自带的getQueryLog方法直接打印: DB::connection()->enableQueryLog(); // 开启QueryLog \App\User::fi ...
- laravel 打印完整sql
DB::connection()->enableQueryLog(); // 开启QueryLog \App\User::find(1); dump(DB::getQueryLog());
- p6spy打印SQL
一 Springboot项目 <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</a ...
- SpringBoot打印MyBatis sql日志输出
SpringBoot打印MyBatis sql日志输出 默认情况下mybatis是不开启SQL日志输出,需要手动配置 方法一:(在mybatis整合在springboot框架的情况下) 只需要在配置文 ...
- javaweb log4j显示完整sql日志
javaweb显示完整sql日志 所需jar包: log4j-1.2.17.jar log4jdbc-1.2.jar slf4j-api-1.7.12.jar slf4j-log4j12-1.7.12 ...
- SpringBoot整合Mybatis完整详细版
记得刚接触SpringBoot时,大吃一惊,世界上居然还有这么省事的框架,立马感叹:SpringBoot是世界上最好的框架.哈哈! 当初跟着教程练习搭建了一个框架,传送门:spring boot + ...
- 保存 Mybatis打印的SQL日志到数据库
之前做项目,一般会有一张,用户操作记录的数据表,里面主要包括一些,用户请求的URL和请求参数,用以记录用户做过哪些事情.并没有以文件的形式来做记录,当然只适合于一些用户量特别少的系统. 而Mybati ...
随机推荐
- IOS中使用轻量级数据库
IOS中使用轻量级数据库 目录 概述 IOS中的轻量级数据库 sqlite的方法 数据库的实用操作 第三方类库 FMDatabase 概述 IOS中的轻量级数据库 sqlite的方法 sqlite3 ...
- linux清理n天前的文件命令
记得有一次面试时问题改问题.现特此记录 find ${DATADIR}/user*.log -type f -mtime +1 -exec rm {} \; DATADIR是自己定义变量 -mtime ...
- 微信小程序 --- loading提示框
loading:提示框: 效果: loading和toast和像,只不过 toast 是设置结束时间,时间到了去触发bindchange事件,进行隐藏. 但是 loading 是没有办法设置事件让其隐 ...
- 【模块化开发】------requireJS的基本使用------【巷子】
前言 为了提高代码的复用度,开发人员会按照功能把大量的js代码分成若干文件,这样在多个页面就可以使用同一个文件了.,下面是某个网站的js引用情况 虽然代码的复用度提升了,但是缺点也体现了出来 缺点: ...
- LINQ中的连接(join)用法示例
Linq中连接主要有组连接.内连接.左外连接.交叉连接四种.各个用法如下. 1. 组连接 组连接是与分组查询是一样的.即根据分组得到结果. 如下例,根据publisther分组得到结果. 使用组连接的 ...
- java个人所得税计算器
class Caculate{ private String name; private double money; private double actual; /** * @param usern ...
- 沈阳网络赛G-Spare Tire【容斥】
17.64% 1000ms 131072K A sequence of integer \lbrace a_n \rbrace{an} can be expressed as: \display ...
- console access jquery--------json
jq = document.createElement('script'); jq.src = "file:///home/liulqiang/jquery.js"; docu ...
- 如何打造高性能Web应用
Sean Hull是Heavyweight Internet Group的创始人兼高级顾问,拥有20年以上技术顾问相关经验,曾为多家知名机构提供咨询,其中包括The Hollywood Reporte ...
- mysql float 浮点型
定点数类型 DEC等同于DECIMAL 浮点类型:FLOAT DOUBLE 作用:存储薪资.身高.体重.体质参数等 m,d 都是设置宽度 =============================== ...