Spring Boot 查询 SQL 为空,为何 IDEA 返回空结果,Navicat 却能成功查询?

spring boot 查询 sql 为空,为何 idea 返回空结果,navicat 却能成功查询?

Spring Boot 查询 SQL 为空,问题根源在哪里?

在使用 Spring Boot 查询数据库时,遇到了如下问题:使用 IDEA 执行查询返回空结果,而使用 Navicat 执行相同 SQL 语句却能成功返回数据。排查问题原因如下:

#和$的区别

Spring Boot 中,使用 #{} 绑定参数,表示 动态参数,会自动进行 SQL 注入防御。而使用 $() 绑定参数,表示 静态参数,不会进行 SQL 注入防御。

在本例中,使用 #{} 绑定空参数,导致 SQL 注入防御机制过滤了该参数,导致查询条件无效,返回空结果。

mybatis log插件

使用 IDEA 开发时,可以安装 mybatis log 插件。启用该插件后,可以在 IDEA 控制台查看 MyBatis 执行的 SQL 语句,从而方便排查问题。

排查步骤:

  1. 安装 mybatis log 插件
  2. 设置 IDEA 日志级别为 DEBUG
  3. 重新运行查询操作
  4. 查看控制台打印的 SQL 语句,找出问题所在

通过以上排查步骤,可以快速定位问题原因,并解决查询为空的问题。

以上就是Spring Boot 查询 SQL 为空,为何 IDEA 返回空结果,Navicat 却能成功查询?的详细内容,更多请关注其它相关文章!