一 查询条件的三种
1.按条件查询
java
//方式一:按条件查询
QueryWrapper qw = new QueryWrapper();
qw.lt("age",18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
2.lambda格式按条件查询
java
//方式二:lambda格式按条件查询
QueryWrapper<User> qw = new QueryWrapper<User>();
qw.lambda().lt(User::getAge, 10);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
3.lambda格式按条件查询2
java
//方式三:lambda格式按条件查询
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.lt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
二.并且与或者的关系
java
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//并且关系:10到30岁之间
//lqw.lt(User::getAge, 30).gt(User::getAge, 10);
//或者关系:小于10岁或者大于30岁
lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
三 null值的处理
在进行条件查询时,如果条件封闭不彻底则会出现null值。
初始:新建一个query包下的query类,继承要添加上下限的实体类,内部属性:年龄,薪资等有范围的数据。
java
@Data
public class UserQuery extends User {
private Integer age2;
}
1.if语句控制
java
//模拟页面传递过来的查询数据
UserQuery uq = new UserQuery();
uq.setAge(10);
uq.setAge2(30);
//null判定
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.lt(User::getAge, uq.getAge2());
if( null != uq.getAge()) {
lqw.gt(User::getAge, uq.getAge());
}
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
2.Lambda处理
java
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//先判定第一个参数是否为true,如果为true连接当前条件
// lqw.lt(null != uq.getAge2(),User::getAge, uq.getAge2());
// lqw.gt(null != uq.getAge(),User::getAge, uq.getAge());
lqw.lt(null != uq.getAge2(),User::getAge, uq.getAge2())
.gt(null != uq.getAge(),User::getAge, uq.getAge());
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
四 查询投影
QueryWrapper适用于可以查询自定义字段的,有些如果不支持,则在dom层下的Mapper进行写入
java
QueryWrapper<User> lqw = new QueryWrapper<User>();
lqw.select("count(*) as count, tel");
lqw.groupBy("tel");
List<Map<String, Object>> userList = userDao.selectMaps(lqw);
System.out.println(userList);
五 条件查询
java
//条件查询
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//等同于=
lqw.eq(User::getName,"Jerry").eq(User::getPassword,"jerry");
User loginUser = userDao.selectOne(lqw);
System.out.println(loginUser);
六 范围查询
java
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// //范围查询 lt le gt ge eq between
lqw.between(User::getAge,10,30);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
七 模糊查询
java
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// //模糊匹配 like,其中likeleft,likeright中的left和right是%匹配符的位置
lqw.likeLeft(User::getName,"J");
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
更多查询条件设置参看 https://mybatis.plus/guide/wrapper.html#abstractwrapper