栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MybatisPlus3----条件构造器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 wrapper = new QueryWrapper<>();
wrapper.eq("user_name",userName);
List list = baseMapper.selectList(wrapper);
2.EntityWrapper

1.说明

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

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

2.测试代码

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

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

1.说明

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

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

2.测试代码

UpdateWrapper 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 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 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 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);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号