在开发过程中, 经常会遇到想要看到应用所执行的 sql 这样的需求.
比如你写了一个查询的功能, 但查询出来的结果与你预期的不符合, 你想搞清楚到底哪里出了问题, 你自然需要看看所执行的 sql 语句, 必要的话甚至还要亲自拷贝到数据库里去查查.
自然, 这就要求应用要能把执行的 sql 输出出来. 以常用的 mybatis 框架为例, 来看一个最终的效果:
14:48 ==> Preparing: select * from user where id = ?
14:48 ==> Parameters: 1(Integer)
14:48 <== Total: 1
另注: 这里的日志布局我启用了一种极简的风格, 只有"分钟:秒数", 具体见 配置简化开发阶段日志输出布局 的介绍.
那么, 在 mybatis 里, 这个要怎么做到呢?
配置 sql 输出
具体来说, 是要增加一个日志级别的配置, 将 dao(或 mapper) 包级别调整到 DEBUG.
示例:
# log sql statement
logging.level.net.xiaogd.sample.mybatis.dao=DEBUG
注: 上述配置建议放在你的本地开发环境配置文件中, 通常为 application-dev.properties, 关于 spring-boot 的 分环境配置 的 profile 机制, 如不熟悉请自行查阅网络了解.
对应工程代码包结构如下: