SpringBoot中打印 sql 语句

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、在配置文件中 application.yml 配置即可
  • 二、#Log4g打印SqL语句
  • 三、配置Logback
  • 总结


前言

在SpringBoot中,我们可以使用日志框架来打印SQL语句,常用的日志框架有Logback和Log4j2。下面以Logback为例,介绍如何在SpringBoot中打印SQL语句。


一、在配置文件中 application.yml 配置即可

#spring boot集成mybatis的方式打印sql
logging:
    level:
      com.xxx.mapper: DEBUG // 包路径为mapper文件包路径

二、#Log4g打印SqL语句

mybatis
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 

打印的sql语句

==>  Preparing: select id, user_id as userId, role_id as roleId from t_user_role where user_id = ?
==> Parameters: 11(Integer)
<==      Total: 0

/**
 *第一行是sql语句
 *第二行是参数
 *第三行是返回的行数
 */

三、配置Logback

1.添加依赖
首先,在pom.xml文件中添加Logback的依赖:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>

2.配置Logback
在src/main/resources目录下创建logback.xml文件,配置Logback的日志输出格式和日志级别。下面是一个简单的logback.xml配置文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="org.hibernate.SQL" level="debug"/>
    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

上面的配置文件中,我们定义了一个名为STDOUT的日志输出器,将日志输出到控制台。在logger标签中,我们指定了org.hibernate.SQL这个包的日志级别为debug,这样就可以打印SQL语句了。

3.测试
在代码中执行SQL语句时,Logback会自动打印SQL语句。例如,在SpringBoot中使用JdbcTemplate执行SQL语句:

@Autowired
private JdbcTemplate jdbcTemplate;

public List<User> findAll() {
    String sql = "SELECT * FROM user";
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}

执行以上代码时,Logback会自动打印出类似于下面的SQL语句:

17:28:06.441 [main] DEBUG org.hibernate.SQL - SELECT * FROM user

至此,我们已经成功地在SpringBoot中打印SQL语句了。需要注意的是,开发过程中不要将日志级别设置为debug,因为这样会打印出大量的调试信息,影响程序的性能。在生产环境中,建议将日志级别设置为info或者warn。

总结

SpringBoot中打印 sql 语句_第1张图片

需要系统源码或者BiShe加V
ID:talon712

你可能感兴趣的:(spring,boot,sql,mybatis)