返回

一文看懂Spring Boot和MyBatis-Plus 打印SQL的两种途径!

后端

当开发者利用Spring Boot框架搭配MyBatis-Plus库进行数据访问操作时,时常需要检查执行的SQL语句以确保逻辑正确。本文将介绍两种有效的办法来实现这一目标,并探讨如何通过配置GlobalMapper来达到最佳效果。

方法一:修改全局配置文件

首先,我们可以通过编辑Spring Boot项目的全局配置文件(通常为application.propertiesapplication.yml)来启用SQL语句的打印功能。该方法适用于整个应用程序范围内的所有操作。

配置步骤:

  1. 打开项目中的application.propertiesapplication.yml文件。

  2. 添加以下配置以开启日志记录并设置合适的日志级别,确保能够看到详细信息:

    logging.level.com.yourpackage=DEBUG  # 替换为你的包名前缀
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    
  3. 如果使用application.yml格式,则配置如下:

    logging:
      level:
        com:
          yourpackage: DEBUG  # 替换为你的包名前缀
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

这种方法下,所有执行的SQL语句将会直接输出到控制台或日志文件中。适合于开发和测试阶段使用。

方法二:配置MyBatis-Plus全局Mapper

除了上述配置外,开发者还可以通过自定义GlobalMapper来实现对特定操作打印SQL的功能。这种方法更灵活,允许仅针对某些部分的数据访问进行详细追踪。

配置步骤:

  1. 创建一个新的类继承于AbstractSqlParserInterceptor,该类负责拦截并记录执行的SQL语句。

    public class SqlPrintInterceptor extends AbstractSqlParserInterceptor {
        @Override
        protected String parser(String sql) {
            // 实现自定义的日志打印逻辑
            System.out.println("执行的 SQL: " + sql);
            return super.parser(sql);
        }
    }
    
  2. 在Spring Boot的应用程序配置类中,注册这个拦截器。

    @Configuration
    public class MyBatisPlusConfig {
        @Bean
        public Interceptor sqlPrintInterceptor() {
            return new SqlPrintInterceptor();
        }
    
        @Bean
        public GlobalConfig globalConfig() {
            GlobalConfig globalConfig = new GlobalConfig();
            List<Interceptor> interceptors = new ArrayList<>();
            interceptors.add(sqlPrintInterceptor());
            globalConfig.setDbConfig(new DBConfig().setInterceptors(interceptors));
            return globalConfig;
        }
    }
    
  3. 确保你的Spring Boot项目中引入了MyBatis-Plus的依赖。

    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>最新版本号</version>
    </dependency>
    

通过上述步骤,可以实现对特定SQL操作进行追踪的功能。这种方式适用于生产环境或需要精细化监控的场景。

安全建议

虽然打印执行的SQL语句对于调试和优化性能大有帮助,但务必确保在部署到生产环境之前关闭该功能,以防止敏感信息泄露。此外,合理设置日志级别与内容能够有效保护系统安全。

总结

本文介绍了两种在Spring Boot项目中搭配MyBatis-Plus时打印SQL语句的方法,并给出了详细的实现步骤和代码示例。开发者可根据实际情况选择合适的方案来优化自己的应用开发流程。