MybatisPlus3----条件构造器

1.说明

条件构造器就是指的是mybatisPlus的条件筛选,通过mybatisPlus的条件构造器对数据进行筛选,让mybatisPlus执行where语句。

2.条件构造器的体系图(3.0x版本以上)

在这里插入图片描述

3.语法

方法名说明用法实例等价SQL
eq等于 =例:eq(“name”,“唐”)name = ‘唐’
ne不等于<>例:ne(“name”,“唐”)name <> ‘唐’
gt大于>例:gt(“age”,18)age > 18
ge大于等于>=例:ge(“age”,18)age >= 18
lt小于<例:lt(“age”,18)age < 18
le小于<=例:le(“age”,18)age <= 18
betweenbetween 值1 and 值2例:between(“age”,18,30)age between 18 and 30
notBetweennot between 值1 and 值2例:notBetween(“age”,18,30)age not between 18 and 30
likelike ‘%值%’例:like(“name”,“唐”)name like ‘%唐%’
notLikenot like ‘%值%’例:notLike(“name”,“唐”)name not like ‘%唐%’
likeLeftlike ‘%值’例:likeLeft(“name”,“唐”)name like ‘%唐’
likeRightlike ‘值%’例:likeRight(“name”,“唐”)name like ‘唐%’
isNull字段 is null例:isNull(“name”)name is null
isNotNull字段 is not null例:isNotNull(“name”)name is not null
in字段 in (值1,值2)例:.in(“age”,18,20)age in (18,20)
notIn字段 not in (值1,值2)例:notIn(“age”,18,20)age not in (18,20)
inSql字段 in (sql语句)例:inSql(“id”,“select id from table where id < 3”)id in (select id from table where id < 3)
notInSql字段 not in (sql语句)例:notInSql(“id”,“select id from table where id < 3”)id not in (select id from table where id < 3)
groupBy分组:group by 字段1,字段2例:groupBy(“id”,“name”)group by id,name
orderByAsc排序:order by 字段1,字段2 asc例:orderByAsc(“id”,name)order by id asc,name asc
orderBydesc排序:order by 字段1,字段2 desc例:orderByDesc(“id”,“name”)order by id desc,name desc
orderBy排序:order by 字段例:.orderBy(true, true, “id”, “name”) PS:第一个true是开启orderby,true开启,false关闭;第二个true是开启asc还是desc,true为asc,false为desc;order by id asc,name asc
havinghaving(sql语句)例:.having(“sum(age) > 10”) PS:要和groupBy一起使用having sum(age) > 10
or拼接or例:eq(“id”,1).or().eq(“name”,“唐”) PS:主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)id = 1 or name = ‘唐’
or嵌套拼接or嵌套例:or(i -> i.eq(“name”, “李白”).ne(“state”, 0))or (name = ‘李白’ and status <> 0)
and嵌套拼接and嵌套例:and(i -> i.eq(“name”, “李白”).ne(“state”,0))and (name = ‘李白’ and state <> 0)
apply拼接sql例:apply(“id = 1”)id = 1
apply函数apply函数使用例:apply(“date_format(dateColumn,‘%Y-%m-%d’) = ‘2008-08-08’”)date_format(dateColumn,‘%Y-%m-%d’) = ‘2008-08-08’")
last直接拼接sql例:last(“limit 1”) PS:无视优化规则直接拼接到 sql 的最后,只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用limit 1
exists拼接exists(sql语句)例:exists(“select id from table where age = 1”)exists (select id from table where age = 1)
notExists拼接not exists(sql语句)例:notExists(“select id from table where age = 1”)not exists (select id from table where age = 1)
nested正常嵌套 不带 AND 或者 OR例:nested(i -> i.eq(“name”, “李白”).ne(“state”, 0))(name = ‘李白’ and state<> 0)

4.条件构造器的分类

1.QueryWrapper()

1.说明

对象封装操作类,用于查询;

3.x的版本才有QueryWrapper,EntityWrapper继承AbstractWrapper抽象父类,来让用户自由的构建查询条件,简单编辑、提高开发效率

PS:使用的是数据库字段、不是Java属性

2.测试代码

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("user_name",userName);
List<User> list = baseMapper.selectList(wrapper);
2.EntityWrapper

1.说明

对象封装操作类,用于查询;

3.x以下版本才有EntityWrapper,EntityWrapper继承Wrapper抽象父类

2.测试代码

EntityWrapper<User> wrapper = new EntityWrapper<>();
wrapper.eq("user_name",userName);
List<User> list = baseMapper.selectList(wrapper);

Wrapper<User> wrapper = new EntityWrapper<>();
wrapper.eq("user_name",userName);
List<User> list = baseMapper.selectList(wrapper);
3.UpdateWrapper

1.说明

条件封装操作类,用于更新。

和QueryWrapper(),EntityWrapper条件构造器相比,区别就是可以设置字段值

2.测试代码

UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.eq("user_id", user.getUserId());
wrapper.set("password",null);
baseMapper.update(user, wrapper);
4.LambdaQueryWrapper

1.说明

利用lambda表达式的一个用法(类::静态方法)获得属性对应字段,可防止写错字段名,用于查询。

2.测试代码

public void selectList4(){
    //多条件拼接,有条件就拼接
    String name="";
    Integer agebegin = 20;
    Integer ageend=21;
    LambdaQueryWrapper<User> lambdaQueryWrapper=new LambdaQueryWrapper<>();
    //利用lambda表达式的一个用法(类::静态方法)获得属性
    lambdaQueryWrapper.like(StringUtils.isNotBlank(name),User_plus::getName,name)
        .ge(agebegin!=null,User_plus::getAge,agebegin)
        .le(ageend!=null,User_plus::getAge,agebegin);
    List<User> userlist = user_plusDAO.selectList(lambdaQueryWrapper);
    userlist.forEach(System.out::println);
}
5.LambdaUpdateWrapper

1.说明

Update 条件封装,利用lambda表达式的一个用法(类::静态方法)获得属性对应字段,可防止写错字段名,,用于更新。

和LambdaQueryWrapper条件构造器相比,区别就是可以设置字段值

2.测试代码

public void updateWrapper(){
    User_plus user=new User_plus();
    LambdaUpdateWrapper<User_plus> lambdaUpdateWrapper=new LambdaUpdateWrapper<>();
    //设置更新字段
    lambdaUpdateWrapper.set(User_plus::getName,"张飞");
    //设置更新条件
    lambdaUpdateWrapper.eq(User_plus::getId,1);
    int i = user_plusDAO.update(user,lambdaUpdateWrapper);
    System.out.println(i);
}
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值