1️⃣ 作用
-
LambdaQueryWrapper 是 MyBatis-Plus 提供的条件构造器
-
用于拼装 SQL 查询条件,避免手写 SQL
-
使用实体类的属性来指定字段,安全可靠
-
支持链式调用(Builder 风格),代码清晰可读
2️⃣ 构造流程
-
创建容器
-
首先创建一个 LambdaQueryWrapper 对象,作为条件容器
-
-
添加筛选条件
-
可以根据不同需求添加条件,如:
-
等于、不等于
-
大于、小于、大于等于、小于等于
-
模糊匹配
-
包含某些值
-
区间查询
-
-
可以根据条件动态添加,灵活控制查询逻辑
-
-
添加排序条件
-
支持升序和降序
-
可链式添加多个排序字段
-
排序顺序影响最终结果:先排序的字段优先
-
3️⃣ 常用查询方法
-
查询多条记录
-
查询符合条件的实体列表
-
可以选择返回实体对象、字段映射的 Map 或单列值列表
-
-
查询单条记录
-
查询符合条件的一条记录
-
可以控制多条结果时是否报错或返回第一条
-
也可以通过主键直接查询单条记录
-
-
分页查询
-
支持分页,通过指定页码和每页条数获取结果
-
返回分页对象,可获取总记录数、总页数、当前页记录等信息
-
-
记录统计与存在性判断
-
可以统计符合条件的记录总数
-
可以判断是否存在符合条件的记录
-
4️⃣ 使用技巧
-
链式调用,使条件构造清晰易读
-
使用 Lambda 表达式引用实体属性,避免写错字段名
-
动态添加条件,根据实际参数决定是否加条件
-
可将筛选、排序、分页组合使用,实现灵活查询
5️⃣ 总体流程
-
创建 LambdaQueryWrapper 容器
-
添加筛选条件
-
添加排序条件
-
选择查询方式(多条、单条、分页、统计等)
-
执行查询
-
返回结果
-
示例
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; public class ProductCategoryService { // 假设这是 MyBatis-Plus 的 Service private ProductCategoryMapper productCategoryMapper; public IPage<ProductCategory> getActivePhoneCategories(int pageNum, int pageSize) { // 1️⃣ 创建 LambdaQueryWrapper 容器 LambdaQueryWrapper<ProductCategory> wrapper = new LambdaQueryWrapper<>(); // 2️⃣ 添加筛选条件 wrapper.eq(ProductCategory::getStatus, "启用") // 状态为启用 .like(ProductCategory::getName, "手机"); // 名称包含“手机” // 3️⃣ 添加排序条件 wrapper.orderByAsc(ProductCategory::getSort) .orderByDesc(ProductCategory::getCreateTime); // 4️⃣ 选择查询方式(分页查询) Page<ProductCategory> page = new Page<>(pageNum, pageSize); // 5️⃣ 执行查询 IPage<ProductCategory> result = productCategoryMapper.selectPage(page, wrapper); // 6️⃣ 返回结果 return result; } // 查询多条记录示例 public List<ProductCategory> listActiveCategories() { LambdaQueryWrapper<ProductCategory> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProductCategory::getStatus, "启用") .orderByAsc(ProductCategory::getSort); return productCategoryMapper.selectList(wrapper); } // 查询单条记录示例 public ProductCategory getCategoryByName(String name) { LambdaQueryWrapper<ProductCategory> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProductCategory::getName, name); return productCategoryMapper.selectOne(wrapper); } }
1万+

被折叠的 条评论
为什么被折叠?



