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

3.5.3.1

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

使用动态表名

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

原始sql

DELETE ci FROM h_b_course_info ci
        LEFT JOIN h_b_course_@ course ON ci.COURSE_ID = course.ID
         WHERE ci.CARD_ID = ?

我需要把表名h_b_course_@进行替换

public DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() {
        DynamicTableNameInnerInterceptor interceptor = new DynamicTableNameInnerInterceptor();
        interceptor.setTableNameHandler((sql, tableName) -> {
            log.info("动态表名:{};{}", sql, tableName);
            switch (tableName) {
                case "h_b_course_@": {
                    Integer sid = StoreContext.getSid();
                    if (sid == null || sid <= 0) {
                        throw new TktException("sid不合法");
                    }
                    return tableName.replace("@", String.valueOf(sid % 200));
                }
                default:
                    return tableName;
            }
        });
        return interceptor;
    }

代码运行后,没有把h_b_course_@转换格式,其他查询新增语句的转换都没有问题,就这一个sql目前有问题不能转换

log日志打印的信息是:

动态表名:DELETE ci FROM h_b_course_info ci
        LEFT JOIN h_b_course_@ course ON ci.COURSE_ID = course.ID
         WHERE ci.CARD_ID = ?

报错信息

Comment From: qmdx

换个写法 delete from ... join 部分语句写在 where 后面

Comment From: qmdx

未反馈,无法解析可以参考 baomidou.com 插件主体部分排查