mybatis-plus条件构造器

wapper介绍

Wrapper : 条件构造抽象类,最顶端父类
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
QueryWrapper : 查询条件封装
UpdateWrapper : Update 条件封装
AbstractLambdaWrapper : 使用Lambda 语法
LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper

方法名【说明】用法实例【等价sql】
allEq(Map<R, V> params)【全部等于】map.put(“id”,“3”);map.put(“user_name”,“IT可乐”);allEq(map) 【user_name = “IT可乐” AND id = 3】
eq(R column, Object val)【等于 = 】eq(“id”,“3”) 【id = 3】
ne(R column, Object val)【不等于 <>】ne(“id”, “3”) 【id <> 3】
gt(R column, Object val)【大于 >】gt(“user_age”,“18”) 【user_age > 18】
ge(R column, Object val)【大于等于 >=】ge(“user_age”,“18”) 【user_age >= 18】
lt(R column, Object val) 【小于 <】lt(“user_age”,“18”) 【user_age < 18】
le(R column, Object val)【小于等于 <=】le(“user_age”,“18”) 【user_age <= 18】
between(R column, Object val1, Object val2)【BETWEEN 值1 AND 值2】between(“user_age”,“18”,“25”) 【user_age BETWEEN 18 AND 25】
notBetween(R column, Object val1, Object val2)【NOT BETWEEN 值1 AND 值2】notBetween(“user_age”,“18”,“25”) 【user_age NOT BETWEEN 18 AND 25】
like(R column, Object val) 【LIKE ‘%值%’】like(“user_name”,“可乐”) 【like ‘%可乐%’】
notLike(R column, Object val)【NOT LIKE ‘%值%’】notLike(“user_name”,“可乐”) 【not like ‘%可乐%’】
likeLeft(R column, Object val)【LIKE ‘%值’】likeLeft(“user_name”,“可乐”) 【like ‘%可乐’】
likeRight(R column, Object val) 【LIKE ‘值%’】likeRight(“user_name”,“可乐”) 【like ‘可乐%’】
isNull(R column)【字段 IS NULL】isNull(“user_name”) 【user_name IS NULL】
isNotNull(R column)【字段 IS NOT NULL】isNotNull(“user_name”) 【user_name IS NOT NULL】
in(R column, Collection<?> value)【字段 IN (value.get(0), value.get(1), …)】in(“user_age”,{1,2,3}) 【user_age IN (?,?,?)】
notIn(R column, Collection<?> value)【字段 NOT IN (value.get(0), value.get(1), …) 】notIn(“user_age”,{1,2,3}) 【user_age NOT IN (?,?,?)】
inSql(R column, String inValue)【字段 IN ( sql语句 )】inSql(“id”,“select id from user”) 【id IN (select id from user)】
notInSql(R column, String inValue)【字段 NOT IN ( sql语句 )】notInSql(“id”,“select id from user where id > 2”) 【id NOT IN (select id from user where id > 2】
groupBy(R… columns) 【分组:GROUP BY 字段, …】groupBy(“id”,“user_age”) 【GROUP BY id,user_age】
orderByAsc(R… columns)【排序:ORDER BY 字段, … ASC】orderByAsc(“id”,“user_age”) 【ORDER BY id ASC,user_age ASC】
orderByDesc(R… columns)【排序:ORDER BY 字段, … DESC】orderByDesc(“id”,“user_age”) 【ORDER BY id DESC,user_age DESC】
orderBy(boolean condition, boolean isAsc, R… columns)【ORDER BY 字段, … 】orderBy(true,true,“id”,“user_age”)【ORDER BY id ASC,user_age ASC】
having(String sqlHaving, Object… params) 【HAVING ( sql语句 ) 】having(“sum(user_age)>{0}”,“25”) 【HAVING sum(user_age)>25】
or() 【拼接 OR 】eq(“id”,1).or().eq(“user_age”,25) 【id = 1 OR user_age = 25】
and(Consumerconsumer) 【AND 嵌套 】and(i->i.eq(“id”,1).ne(“user_age”,18)) 【id = 1 AND user_age <> 25】
nested(Consumerconsumer) 【正常嵌套 不带 AND 或者 OR 】nested(i->i.eq(“id”,1).ne(“user_age”,18)) 【id = 1 AND user_age <> 25】
apply(String applySql, Object… params) 【拼接 sql(不会有SQL注入风险) 】apply(“user_age>{0}”,“25 or 1=1”) 【user_age >‘25 or 1=1’】
last(String lastSql) 【拼接到 sql 的最后,多次调用以最后一次为准(有sql注入的风险) 】last(“limit 1”) 【limit 1】
exists(String existsSql) 【拼接 EXISTS ( sql语句 ) 】exists(“select id from user where user_age = 1”) 【EXISTS (select id from user where user_age = 1)】
notExists(String notExistsSql) 【拼接 NOT EXISTS ( sql语句 ) 】notExists(“select id from user where user_age = 1”) 【NOT EXISTS (select id from user where user_age = 1)】

动态参数例子

    @RequestMapping("/queryWrapper4")
    @ResponseBody
    public String queryWrapper4(@RequestParam(required = false)Long id,
                                @RequestParam(required = false)String name,
                                @RequestParam(required = false)String email,
                                @RequestParam(required = false)String adress){
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        if (id!=null && id!=0){
            wrapper.eq("id", id);
        }
        if(name!=null && StrUtil.isNotBlank(name)){
            wrapper.eq("name", name);
        }
        if(email!=null && StrUtil.isNotBlank(email)){
            wrapper.eq("email", email);
        }
        if(adress!=null && StrUtil.isNotBlank(adress)){
            wrapper.eq("adress", adress);
        }
        List<User> list = userMapper.selectList(wrapper);

        return JSON.toJSONString(list);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值