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

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

不影响就不是事