SpringBoot实现执行sql语句打印到控制台
1.简介
每当写完持久化语句时肯定免不了要查漏补缺一波。这里就可以将执行的sql打印到控制台来检查sql语句哪里出了问题。
2.配置
配置非常简单,只需要在配置文件中设置下mapper日志级别就可以了
application-test.properties
#logging.level.mapper的路径=异常级别
logging.level.com.shuhe360.auth.auth_main_car_api.mapper.CarConsumeRecordMapper=DEBUG
3.jpa
如果操作数据库用的jpa也可以来手动开启打印语句到控制台的
4.jpa开启
# JPA 相关配置
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
#这里开启sql打印
spring.jpa.show-sql=false
#程序启动时删除并创建实体类对应的那个表(危险)
spring.jpa.hibernate.ddl-auto=none
springboot 打印sql 语句
在配置文件中 application.yml 配置如下其一即可
方式一:
logging:level:com.xxx.com.dao.mapper: DEBUG //包路径为mapper文件包路径
打印出来的形式如下:
2022-05-29 10:02:14.245 [http-nio-8060-exec-2] DEBUG c.s.a.m.m.U.getUsernameExistSet 159 - ==> Preparing: SELECT username FROM user_info WHERE username in ( ? , ? , ? )
方式二:
mybatisconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
打印出来的形式如下
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2e943ddb]
JDBC Connection [HikariProxyConnection@898692052 wrapping com.mysql.jdbc.JDBC4Connection@6a0c5a04] will be managed by Spring
==> Preparing: DELETE FROM user_info WHERE uid in ( ? , ? , ? )
==> Parameters: 44(Long), 45(Long), 46(Long)
<== Updates: 0
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2e943ddb]
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2e943ddb]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2e943ddb]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2e943ddb]
扩展: