说明
包含查询,对应SQL语句中的 in
语句,查询参数包含在入参列表之内的数据。
in
@Test
void inNonEmptyList() {
// 非空列表,作为参数
List<Integer> ages = Stream.of(18, 20, 22).collect(Collectors.toList());
in(ages);
}
@Test
void inEmptyList() {
// 空列表,作为参数
List<Integer> ages = new ArrayList<>();
in(ages);
}
/**
* 查询用户列表, 查询条件:年龄包含在参数列表之内。
* <br>
* 入参不为空和空列表时,“包含”条件生效。
*/
void in(List<Integer> ages) {
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.in(!CollectionUtils.isEmpty(ages), User::getAge, ages);
List<User> users = mapper.selectList(wrapper);
log.info(users.toString());
}
- 非空列表,作为参数
- 空列表,作为参数
notIn
/**
* 查询用户列表, 查询条件:年龄不包含在参数列表之内。
*/
@Test
void notIn() {
List<Integer> ages = Stream.of(18, 20, 22).collect(Collectors.toList());
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.notIn(!CollectionUtils.isEmpty(ages), User::getAge, ages);
List<User> users = mapper.selectList(wrapper);
log.info(users.toString());
}
inSql
不建议使用此方法。建议直接使用原生 MyBatis 去写SQL。
/**
* 查询用户列表, 查询条件:年龄包含在"sql语句的查询结果"之内。
*/
@Test
void inSql() {
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.inSql(User::getAge, "select age from tb_user where age > 25");
List<User> users = mapper.selectList(wrapper);
log.info(users.toString());
}
notInSql
不建议使用此方法。建议直接使用原生 MyBatis 去写SQL。
/**
* 查询用户列表, 查询条件:年龄不包含在"sql语句的查询结果"之内。
*/
@Test
void notInSql() {
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.notInSql(User::getAge, "select age from tb_user where age > 25");
List<User> users = mapper.selectList(wrapper);
log.info(users.toString());
}