确认
当前程序版本
3.5.10.1
问题描述
使用mp 3.5.10.1开启多租户插件,查询数据列表,拼接多个租户ID
详细堆栈日志
Consume Time:0 ms
Execute SQL:SELECT a.id, a."name", a.pid, a."type", a."path", a.icon, a."sort", a."status", a.create_time FROM sys_menu a WHERE a.del_flag = 0 AND a."type" = ('0'::int4) AND a.status = ('0'::int4) AND a.tenant_id = 0 AND a.tenant_id = 0 ORDER BY a."sort" DESC
Comment From: miemieYaho
给出你的复现demo
Comment From: KouShenhai
项目地址:https://github.com/KouShenhai/mybatis-plus-bug-demo
开启异步写入CaffeineJsqlParseCache
static {
JsqlParserGlobal.setJsqlParseCache(new FurySerialCaffeineJsqlParseCache(
Caffeine.newBuilder().maximumSize(4096).expireAfterWrite(10, TimeUnit.MINUTES).build(),
Executors.newVirtualThreadPerTaskExecutor(), true));
}
public class FurySerialCaffeineJsqlParseCache extends AbstractCaffeineJsqlParseCache {
public FurySerialCaffeineJsqlParseCache(Cache<String, byte[]> cache, Executor executor, boolean async) {
super(cache);
// 开启异步
super.async = async;
super.executor = executor;
}
}
项目直接运行,然后访问 http://localhost:8012
打印的SQL出现租户ID多次拼接的情况
==> Preparing: SELECT id, name, tenant_id FROM t_user WHERE (name = ? AND id = ?) AND tenant_id = 0 AND tenant_id = 0
==> Parameters: laokou(String), 1(Integer)
<== Columns: ID, NAME, TENANT_ID
<== Row: 1, laokou, 0
<== Total: 1
Comment From: miemieYaho
应该关闭异步写入,这算一个bug,后面的版本会考虑移除异步
Comment From: KouShenhai
应该关闭异步写入,这算一个bug,后面的版本会考虑移除异步
OK