今天在对接口的时候发现查询一直有空的字段,然后试着打印SQL语句看下,结果试了两种方式都没能正常打印出SQL语句,最后试了第三种才可以。
1. show-sql
这种方式我记得是很好用的,之前用过,这次就不好使了,不知道是不是使用的jar包的区别。
spring:
jpa:
show-sql: true
2. logging
logging:
level:
org:
hibernate:
SQL: DEBUG
这种方式试了一下仍然不好使。
3. logImpl (使用mybatis.xml配置)
发现刚好项目中还有一个xml文件,对于SpringBoot而言,xml配置使用的是少之又少了,然后试了一下果然显示SQL语句了。
如果没有mybatis.xml文件的话,直接在项目的properties文件中添加如下配置也是一样的:
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
由于我的yml里面配置了mybatis.xml
文件,所以我直接在mybatis.xml文件里面配置了
# Mybatis配置
mybatis:
mapperLocations: classpath:mapper/**/*.xml
configLocation: classpath:mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<!-- 控制台打印SQL语句 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
效果如下:
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@607343f1] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@933141587 wrapping com.mysql.jdbc.JDBC4Connection@54604786] will not be managed by Spring
==> Preparing: select role_id from sys_user_role where user_id = ?
==> Parameters: 38(Long)
<== Columns: role_id
<== Row: 1
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@607343f1]
可以看到每次创建连接和关闭连接的信息都会在控制台中显示出来。