MybatisPlus QueryWrapper and or 连用

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

QueryWrapper<User> userWrapper = new QueryWrapper<>();String type = (String) map.get("type");if(StringUtils.isNotBlank(type)) {    userWrapper.eq("is_admin", "admin".equals(type) ? true : false);}String keys = (String) map.get("key");if(StringUtils.isNotBlank(keys)) {    userWrapper.and(wrapper -> wrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys));}

控制台sql打印为:

SELECT        id,        login_name AS loginName,        nick_name AS nickName,        password,        salt,        tel,        email,        locked,        is_admin AS adminUser,        icon,        create_by AS createId,        create_date AS createDate,        update_by AS updateId,        update_date AS updateDate,        del_flag AS delFlag,        remarks     FROM        sys_user     WHERE        is_admin = 0         AND (            login_name LIKE '%j%'             OR tel LIKE '%j%'             OR email LIKE '%j%'         )

切记不能丢了and 

userWrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys)userWrapper.eq("is_admin", "admin".equals(type) ? true : false);

这个条件是不带括号的

WHERE
        is_admin = 0 
        AND login_name LIKE ‘%j%’ 
        OR tel LIKE ‘%j%’ 
        OR email LIKE ‘%j%’ 

or(Function<This, This> func), and(Function<This, This> func) 会为func返回的条件添加括号 or(sql…) and(…)

点这里可以跳转到人工智能网站

发表评论