当前使用版本(必须填写清楚,否则不予处理)
3.3.0
该问题是怎么引起的?(最新版上已修复的会直接close掉)
在3.1.0升级到3.3.0 后,发现在开启逻辑删除再使用and嵌套时,会多一对括号,虽然对运行结果不影响,但过多的无用括号影响了sql的阅读性,希望修复下
重现步骤
public void test(){
QueryWrapper<SysUsers> wrapper = new QueryWrapper<>();
wrapper.eq("username","测试更新");
wrapper.and(i->i.eq("alias","测试"));
SysUsers sysUsers = mapper.selectOne(wrapper);
System.out.println(sysUsers);
}
报错信息
2020-01-16 16:49:21.276 DEBUG 4504 --- [nio-8080-exec-2] com.example.demo.TestMapper.selectOne : ==> Preparing: SELECT id,username,client_id,password,del_flag,create_time,update_time,phone,email,locked,alias FROM sys_users WHERE del_flag=0 AND (username = ? AND ( (alias = ?) ))
2020-01-16 16:49:21.276 DEBUG 4504 --- [nio-8080-exec-2] com.example.demo.TestMapper.selectOne : ==> Parameters: 测试更新(String), 测试(String)
2020-01-16 16:49:21.303 DEBUG 4504 --- [nio-8080-exec-2] com.example.demo.TestMapper.selectOne : <== Total: 1
SysUsers(id=d90335763eaf85c5a9e279722dd947d1, username=测试更新, clientId=9cdef24d0b124c91a572dc5069849485, password=123456, delFlag=0, createTime=2019-12-21T15:11:35, updateTime=null, phone=123456, email=null, locked=0, alias=测试)
此处多生成了对括号(username = ? AND ( (alias = ?) ))
Comment From: miemieYaho
不影响就不是事