(MyBatis-Plus) LambdaQueryWrapper 应用

1️⃣ 作用

  • LambdaQueryWrapper 是 MyBatis-Plus 提供的条件构造器

  • 用于拼装 SQL 查询条件,避免手写 SQL

  • 使用实体类的属性来指定字段,安全可靠

  • 支持链式调用(Builder 风格),代码清晰可读


2️⃣ 构造流程

  1. 创建容器

    • 首先创建一个 LambdaQueryWrapper 对象,作为条件容器

  2. 添加筛选条件

    • 可以根据不同需求添加条件,如:

      • 等于、不等于

      • 大于、小于、大于等于、小于等于

      • 模糊匹配

      • 包含某些值

      • 区间查询

    • 可以根据条件动态添加,灵活控制查询逻辑

  3. 添加排序条件

    • 支持升序和降序

    • 可链式添加多个排序字段

    • 排序顺序影响最终结果:先排序的字段优先


3️⃣ 常用查询方法

  1. 查询多条记录

    • 查询符合条件的实体列表

    • 可以选择返回实体对象、字段映射的 Map 或单列值列表

  2. 查询单条记录

    • 查询符合条件的一条记录

    • 可以控制多条结果时是否报错或返回第一条

    • 也可以通过主键直接查询单条记录

  3. 分页查询

    • 支持分页,通过指定页码和每页条数获取结果

    • 返回分页对象,可获取总记录数、总页数、当前页记录等信息

  4. 记录统计与存在性判断

    • 可以统计符合条件的记录总数

    • 可以判断是否存在符合条件的记录


4️⃣ 使用技巧

  • 链式调用,使条件构造清晰易读

  • 使用 Lambda 表达式引用实体属性,避免写错字段名

  • 动态添加条件,根据实际参数决定是否加条件

  • 可将筛选、排序、分页组合使用,实现灵活查询


5️⃣ 总体流程

  1. 创建 LambdaQueryWrapper 容器

  2. 添加筛选条件

  3. 添加排序条件

  4. 选择查询方式(多条、单条、分页、统计等)

  5. 执行查询

  6. 返回结果

  7. 示例

    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);
        }
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值