QueryWrapper的lambda表达式使用OR

com.baomidou.mybatisplus.core.conditions.query.QueryWrapper是MybatisPlus框架构造查询条件常用的对象

使用lambda表达式写法更为清晰,简洁:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
  queryWrapper.lambda().eq(User::getName,"aa");
  queryWrapper.lambda().ge(User::getAge,20);

默认情况下多个条件是and连接:上述写法对应的SQL为:where name like %aa% and age >= 20

如果要使用or连接的话,方法如下:

queryWrapper.lambda().and(wq->{
    wq.like(User::getName,"aa");
    wq.or().like(User::getName,"bb);
});

这里引申下我遇到的一个场景:需要or连接的是一个集合内的所有元素:

List<String> nameList = Lists.newArrayList("aa","bb","cc");
String firstName = nameList.get(0);
nameList.remove(0);
queryWrapper.lambda().and(wq->{
    wq.like(User::getName,firstName);
    for(String name : nameList){
        wq.or().like(User::getName,name);
    }
});
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper是MybatisPlus框架构造查询条件常用的对象 使用lambda表达式写法更为清晰,简洁: QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(User::getName,"aa"); queryWrapper.lambda().ge(User::getAge,20); 默认情况下多个条件是and连接:上述写法对应的SQL为:where name like %aa% and age >= 20 如果要使用or连接的话,方法如下: queryWrapper.lambda().and(wq->{ wq.like(User::getName,"aa"); wq.or().like(User::getName,"bb); }); 这里引申下我遇到的一个场景:需要or连接的是一个集合内的所有元素: List nameList = Lists.newArrayList("aa","bb","cc"); String firstName = nameList.get(0); nameList.remove(0); queryWrapper.lambda().and(wq->{ wq.like(User::getName,firstName); for(String name : nameList){ wq.or().like(User::getName,name); } });
经验分享 程序员 微信小程序 职场和发展