条件查询方式
- MyBatisPlus 将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
@SpringBootTest
class MybatisplusApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testGetAll() {
// 方式一:按条件查询
QueryWrapper qw = new QueryWrapper();
qw.lt("age", 18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
// 方式二:lambda格式按条件查询
QueryWrapper<User> qw = new QueryWrapper<User>();
qw.lambda().lt(User::getAge, 18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
// 方式三:lambda格式按条件查询
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<user>();
lqw.lt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
// 方式三:lambda格式按条件查询
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<user>();
//lqw.lt(User::getAge, 30)
//lqw.gt(User::getAge, 10);
lqw.lt(User::getAge, 30).gt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
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值处理
@Data
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
}
package com.xxx.domain.query;
@Data
public class UserQuery extends User {
private Integer age2; // 对可能会有上下限的属性做此操作
}
@SpringBootTest
class MybatisplusApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testGetAll() {
// 模拟页面传递过来的查询数据
UserQuery uq = new UserQuery();
uq.setAge(10);
uq.setAge2(30);
// null判定
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<user>();
lqw.lt(null != userQuery.getAge2(), User::getAge, uq.getAge2());
lqw.gt(null != userQuery.getAge(), User::getAge, uq.getAge());
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}
}
