✅ 重点技巧总结
🔥 实战组合案例
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(name != null, User::getName, name)
.ne(status != null, User::getStatus, status)
.gt(ageMin != null, User::getAge, ageMin)
.lt(ageMax != null, User::getAge, ageMax)
.like(email != null, User::getEmail, email)
.in(!CollectionUtils.isEmpty(idList), User::getId, idList)
.orderByAsc(User::getCreateTime)
.orderByDesc(User::getAge);支持:
条件自动忽略
批量 in 查询
多条件排序
灵活组合写法
🔨 推荐封装工具
你可以写一个 QueryWrapperUtils:
public class QueryWrapperUtils {
public static <T> void safeEq(LambdaQueryWrapper<T> wrapper, SFunction<T, ?> column, Object value) {
if (value != null) {
wrapper.eq(column, value);
}
}
public static <T> void safeIn(LambdaQueryWrapper<T> wrapper, SFunction<T, ?> column, Collection<?> values) {
if (values != null && !values.isEmpty()) {
wrapper.in(column, values);
}
}
}这样可以优雅调用:
QueryWrapperUtils.safeEq(queryWrapper, User::getName, req.getName());
QueryWrapperUtils.safeIn(queryWrapper, User::getId, req.getIdList());