243 Star 2.7K Fork 562

MyBatis-Flex/MyBatis-Flex

where中第一个外层括号处理有问题

已完成
创建于  
2023-04-23 09:40

问题描述

WHERE ( (...) OR (...) ) AND (...) 这种情况处理成了 WHERE (...) OR (...) AND (...)
最外层的括号没有被生成

代码:

        String word = (String)map.get("word");
        String status = (String)map.get("status");
        Integer deptId = (int)map.get("deptId");

        QueryWrapper query = QueryWrapper.create();
        query.and(SYS_USER.DEPT_ID.eq(deptId).when(ObjUtil.isNotNull(deptId))
            .or(SYS_USER.DEPT_ID.in(
                select(SYS_DEPT.ID).from(SYS_DEPT)
                    .where(new StringQueryCondition("FIND_IN_SET (?, " + SYS_DEPT.ANCESTORS.getName() + ")", deptId).when(ObjUtil.isNotNull(deptId)))
                )
            )
        )
        .and(SYS_USER.STATUS.eq(status).when(StrChecker.isNotBlank(status)))
        .and(SYS_USER.ACCOUNT.like(word).when(StrChecker.isNotBlank(word))
            .or(SYS_USER.NICKNAME.like(word).when(StrChecker.isNotBlank(word)))
            .or(SYS_USER.EMAIL.like(word).when(StrChecker.isNotBlank(word)))
            .or(SYS_USER.PHONE.like(word).when(StrChecker.isNotBlank(word)))
        );

        this.userMapper.selectListByQuery(query)

生成的SQL为:

SELECT * 
FROM `sys_user` 
WHERE `dept_id` = ?  OR `dept_id` IN ( SELECT `id` FROM `sys_dept` WHERE FIND_IN_SET (?, ancestors ) AND `del` = ? ) 
	AND `status` = ? 
	AND ( `account` LIKE ? OR `nickname` LIKE ? OR `email` LIKE ? OR `phone` LIKE ? ) 
	AND `del` = ? 

期待的SQL为:

SELECT * 
FROM `sys_user` 
WHERE ( `dept_id` = ?  OR `dept_id` IN ( SELECT `id` FROM `sys_dept` WHERE FIND_IN_SET (?, ancestors ) AND `del` = ? ) )
	AND `status` = ? 
	AND ( `account` LIKE ? OR `nickname` LIKE ? OR `email` LIKE ? OR `phone` LIKE ? ) 
	AND `del` = ? 

表结构请参考:子查询时,逻辑删除字段的处理有错误

我当前使用 Mybatis-Flex 版本是?

V1.1.8

错误信息是?(截图或日志)

评论 (1)

糊搞 创建了任务 2年前
糊搞 修改了描述 2年前
展开全部操作日志

下个版本修复

Michael Yang 通过 mybatis-flex/mybatis-flex Commit 9ac59fa任务状态待办的 修改为已完成 2年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
61279 fuhai 1716893681 糊搞-gollyhu
1
https://gitee.com/mybatis-flex/mybatis-flex.git
git@gitee.com:mybatis-flex/mybatis-flex.git
mybatis-flex
mybatis-flex
MyBatis-Flex

搜索帮助