baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.42k stars 4.31k forks source link

IllegalSQLInnerInterceptor 处理Expression未考虑Parenthesis #5842

Closed MynLJL closed 7 months ago

MynLJL commented 11 months ago

当前使用版本(必填,否则不予处理)

3.4.0 之后的版本都有此问题

该问题是如何引起的?(确定最新版也有问题再提!!!)

使用QueryWrapper 构造的sql where 部分被()包裹,此时net.sf.jsqlparser.statement.update.Update#getWhere 获取的Expression真实类型为Parenthesis,然而方法com.baomidou.mybatisplus.extension.plugins.inner.IllegalSQLInnerInterceptor#validExpression并未考虑此场景,导致使用QueryWrapper时(手写sql如果也有括号应该也有此问题),拦截器无法使用

重现步骤(如果有就写完整)

1.引入3.4.0 2.配置IllegalSQLInnerInterceptor 3.使用QueryWrapper查数据库,打印出的sql中 where部分有括号

  1. debug此方法com.baomidou.mybatisplus.extension.plugins.inner.IllegalSQLInnerInterceptor#validExpression可发现问题

报错信息

nieqiurong commented 7 months ago

提供sql示例来修复一下.

nieqiurong commented 7 months ago

用 3.5.6-SNAPSHOT 试试

MynLJL commented 7 months ago

好的,感谢!

---原始邮件--- 发件人: @.> 发送时间: 2024年4月7日(周日) 中午1:15 收件人: @.>; 抄送: @.**@.>; 主题: Re: [baomidou/mybatis-plus] IllegalSQLInnerInterceptor 处理Expression未考虑Parenthesis (Issue #5842)

用 3.5.6-SNAPSHOT 试试

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>