Closed xuqiangwei closed 2 months ago
提供复现工程.
提供复现工程.
com.baomidou.mybatisplus.core.conditions.segments.MergeSegments#getSqlSegment 这个方法内, cacheSqlSegment 在未拼接完整sql的时候就赋值为true. 这个问题在 sql 拼接结束后再赋值cacheSqlSegment为true
你是多线程query使用的同一个wrapper?
你是多线程query使用的同一个wrapper?
平台有mybatis拦截器,用来监控sql执行情况,平台没有阻断异常,所以复用了wrapper
Please provide a Minimimal Reproducable Example, preferable as a Github repository. Make sure to include the database, either as an in memory database or if that is not possible using Testcontainers.
请提供一个最小可复现示例,最好作为一个 Github 仓库。请确保包括数据库,如果无法使用内存数据库,可以使用 Testcontainers。
- 你说的旧版本不报错是什呢版本?这个逻辑一直都是这样,没有参数就不能在后面加参数
- 'MergeSegments'这个类设计没问题,你以为放后面再执行一次就你现在的代码他就不报错了吗?
本身就是单线程应用,不存在你说的幂等,就算放你说的地方那还是照样会报错,你自己把报错异常吞掉导致的问题那是你的事
后面的版本加强了参数校验 3.4.2都3年前的版本了,请遵照正确的使用方式使用
当前使用版本 3.5.7 当前环境信息 Java8 + Mysql8
描述bug现象 sql查询条件全部丢失 提供问题复现步骤
异常触发点: com.baomidou.mybatisplus.core.conditions.AbstractWrapper#formatSqlMaybeWithParam 513行
问题点: com.baomidou.mybatisplus.core.conditions.segments.MergeSegments#getSqlSegment 这个方法内, cacheSqlSegment 在未拼接完整sql的时候就赋值为true, 第一次查询异常, sql拼接失败, 第二次查询的时候, 直接返回错误的sql
提供完整堆栈日志(可选)
提供问题复现工程(可选) 请尽量提供复现工程,减少大家排错的时间.