一文看懂Spring Boot和MyBatis-Plus 打印SQL的两种途径!
2023-03-26 23:58:52
当开发者利用Spring Boot框架搭配MyBatis-Plus库进行数据访问操作时,时常需要检查执行的SQL语句以确保逻辑正确。本文将介绍两种有效的办法来实现这一目标,并探讨如何通过配置GlobalMapper
来达到最佳效果。
方法一:修改全局配置文件
首先,我们可以通过编辑Spring Boot项目的全局配置文件(通常为application.properties
或application.yml
)来启用SQL语句的打印功能。该方法适用于整个应用程序范围内的所有操作。
配置步骤:
-
打开项目中的
application.properties
或application.yml
文件。 -
添加以下配置以开启日志记录并设置合适的日志级别,确保能够看到详细信息:
logging.level.com.yourpackage=DEBUG # 替换为你的包名前缀 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
-
如果使用
application.yml
格式,则配置如下:logging: level: com: yourpackage: DEBUG # 替换为你的包名前缀 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
这种方法下,所有执行的SQL语句将会直接输出到控制台或日志文件中。适合于开发和测试阶段使用。
方法二:配置MyBatis-Plus全局Mapper
除了上述配置外,开发者还可以通过自定义GlobalMapper
来实现对特定操作打印SQL的功能。这种方法更灵活,允许仅针对某些部分的数据访问进行详细追踪。
配置步骤:
-
创建一个新的类继承于
AbstractSqlParserInterceptor
,该类负责拦截并记录执行的SQL语句。public class SqlPrintInterceptor extends AbstractSqlParserInterceptor { @Override protected String parser(String sql) { // 实现自定义的日志打印逻辑 System.out.println("执行的 SQL: " + sql); return super.parser(sql); } }
-
在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; } }
-
确保你的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语句的方法,并给出了详细的实现步骤和代码示例。开发者可根据实际情况选择合适的方案来优化自己的应用开发流程。