当前使用版本(必填,否则不予处理)
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 插件主体部分排查