心理取向(Psychological Set)是这样一种现象: 人们看到的是他们所希望看到的东西.
比如下图里, "春天里的巴黎":
你看到几个 "the" 了? 这种取向常常导致调试时的盲目.
--<<代码大全>>
心理取向(Psychological Set)是这样一种现象: 人们看到的是他们所希望看到的东西.
比如下图里, "春天里的巴黎":
你看到几个 "the" 了? 这种取向常常导致调试时的盲目.
--<<代码大全>>
介绍了如何使用 p6spy log 输出应用最终执行的 sql 语句, 以方便调试
在上一篇的 配置 mybatis 打印出执行的 sql 及返回的结果集 中, 说到了在 mybatis 中如何打印出执行的 sql, 但是还是遗留了一个问题, 也即是它的输出的 sql 并不是最终可执行的, 而是类似于 jdbc 那种 PrepareStatement
的形式, 参数的值是用问号代替的, 如下:
select * from user where username = ? and password = ?
虽然其参数值通常也会一起输出, 但如果我们对查询的结果有疑问, 想去数据库里自己执行看看, 就不得不自己去拼凑那些最终的 sql:
select * from user where username = 'admin' and password = '123456';
如果参数特别多的查询, 这会成为一个麻烦. 那么, 是否有方式可以直接输出最终的 sql 呢? 一种方式就是下面将要介绍的 p6spy log.
先看其输出的效果:
26:33 #1607390793732 | took 7ms | statement | connection 0| url jdbc:p6spy:mysql://localhost:3306/code_sample?serverTimezone=GMT%2B8
select * from user where username = ? and password = ?
select * from user where username = 'admin' and password = '123456';
26:33 list size: 1
可以看到, 除了那种 PrepareStatement
的形式, 还有最终的 sql. 那么, 要如何去实现这样的效果呢?
另注: 这里的日志布局我启用了一种极简的风格, 只有"分钟:秒数", 具体见 配置简化开发阶段日志输出布局 的介绍.