Wrappers.lambdaQuery是什么

Wrappers.lambdaQuery() 是 MyBatis-Plus 提供的一个便捷工具方法,用于创建 LambdaQueryWrapper 对象,该对象支持链式调用,能够以 Lambda 表达式的形式构建查询条件,从而提高代码的可读性和可维护性。它特别适用于构建动态查询条件,使得查询逻辑更加清晰和简洁。

用途

  • 构建动态查询条件:可以根据业务需求动态地添加查询条件,例如等值查询、模糊查询、范围查询等。

  • 提高代码可读性:使用 Lambda 表达式可以避免字段名的字符串硬编码,减少错误,同时增强代码的可读性。

使用方法

  1. 创建 LambdaQueryWrapper 对象:通过 Wrappers.lambdaQuery() 方法创建一个 LambdaQueryWrapper 实例。

  2. 链式调用查询条件方法:调用 eq()like()between() 等方法来添加查询条件。

  3. 执行查询:将构建好的 LambdaQueryWrapper 对象传递给 MyBatis-Plus 提供的查询方法,如 selectList()list() 等。

示例代码

以下是一个使用 Wrappers.lambdaQuery() 构建动态查询条件的示例:

// 创建 LambdaQueryWrapper 对象并添加查询条件
LambdaQueryWrapper<HesAppIfno> wrapper = Wrappers.<HesAppIfno>lambdaQuery()
    .eq(HesAppIfno::getStatus, EntityStatusEnum.OK.getCode())
    .eq(HesAppIfno::getCode, dto.getCode())
    .like(HesAppIfno::getName, dto.getName());

// 执行查询
List<HesAppIfno> result = appIfnoMapper.selectList(wrapper);

在这个例子中,eq() 方法用于添加等值查询条件,而 like() 方法用于添加模糊查询条件。这些条件会根据传入的参数动态决定是否添加到查询中。

动态查询条件的应用

  • 条件判断:可以在添加查询条件之前进行条件判断,例如检查字段是否为空,以决定是否将其加入查询条件中。

  • 灵活组合查询条件:可以通过链式调用来组合多个查询条件,实现复杂的查询逻辑。

注意事项

  • 处理 NULL 值:在使用 Wrappers.lambdaQuery() 时,需要注意处理 NULL 值的情况,以避免 MyBatis 报错。可以通过条件判断来确保只有非空值才会被添加到查询条件中。

  • 字段选择:如果只需要查询特定字段,可以使用 select() 方法来指定需要查询的字段,从而提高查询效率。

示例代码:查询特定字段

// 查询特定字段
List<String> itemIds = this.listObjs(Wrappers.lambdaQuery(ItemInfo.class)
    .select(ItemInfo::getId)
    .eq(ItemInfo::getItemCode, item.getItemCode())
    .eq(ItemInfo::getItemBarcode, item.getItemBarcode()), 
    Object::toString);

在这个例子中,select() 方法指定了需要查询的字段,而 eq() 方法用于添加等值查询条件。

总结

Wrappers.lambdaQuery() 是一个强大的工具,能够帮助开发者构建灵活且可读性强的查询条件。通过合理使用 eq()like()between() 等方法,可以轻松实现动态查询逻辑,同时提高代码的质量和可维护性 

// 创建 LambdaQueryWrapper 对象并添加查询条件
LambdaQueryWrapper<Student> wrapper = Wrappers.lambdaQuery(Student.class)
    .in(Student::getClassId, batches)
    .orderByDesc(Student::getCreateTime);

// 执行查询
List<Student> students = studentMapper.selectList(wrapper);

在这个例子中,in() 方法用于添加范围查询条件,而 orderByDesc() 方法用于按指定字段降序排序

// 查询特定字段
List<String> itemIds = this.listObjs(Wrappers.lambdaQuery(ItemInfo.class)
    .select(ItemInfo::getId)
    .eq(ItemInfo::getItemCode, item.getItemCode())
    .eq(ItemInfo::getItemBarcode, item.getItemBarcode()), 
    Object::toString);

在这个例子中,select() 方法指定了需要查询的字段,而 eq() 方法用于添加等值查询条件

// 创建 LambdaQueryWrapper 对象并添加查询条件
LambdaQueryWrapper<HesAppIfno> wrapper = Wrappers.<HesAppIfno>lambdaQuery()
    .eq(HesAppIfno::getStatus, EntityStatusEnum.OK.getCode())
    .eq(HesAppIfno::getCode, dto.getCode())
    .like(HesAppIfno::getName, dto.getName());

// 执行查询
List<HesAppIfno> result = appIfnoMapper.selectList(wrapper);

在这个例子中,eq() 方法用于添加等值查询条件,而 like() 方法用于添加模糊查询条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值