LambdaQueryWrapper查询构造器

LambdaQueryWrapper

LambdaQueryWrapper是MyBatis-Plus库中的一个功能强大的查询构造器,它允许你使用Lambda表达式来构建类型安全的SQL查询。以下是一些关于如何在Java代码中使用LambdaQueryWrapper的基本示例:

基本用法

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
​
// ...
​
LambdaQueryWrapper<Activity> lqw = Wrappers.lambdaQuery();
lqw.eq(Activity::getDelFlag, "0");

在这个例子中,我们首先导入了必要的类,然后创建了一个LambdaQueryWrapper实例,并使用eq()方法添加了一个等于条件。

添加多个条件

你可以链式调用多个条件方法来构建更复杂的查询:

lqw.eq(Activity::getDelFlag, "0")
   .gt(Activity::getStartTime, someDate)
   .lt(Activity::getEndTime, anotherDate);

在这个例子中,我们添加了三个条件:delFlag等于"0",startTime大于某个日期,以及endTime小于另一个日期。

使用or和and逻辑

你可以使用and()or()方法来组合条件:

lqw.and(wq -> wq.eq(Activity::getDelFlag, "0").or().eq(Activity::getStatus, "active"));

在这个例子中,我们创建了一个嵌套的条件,表示delFlag等于"0"或者status等于"active"。

分页查询

你可以使用page()方法进行分页查询:

Page<Activity> page = new Page<>(currentPage, pageSize);
IPage<Activity> result = activityMapper.selectPage(page, lqw);

在这个例子中,我们创建了一个Page对象来指定当前页码和每页大小,然后调用selectPage()方法执行分页查询。

排序

你可以使用orderBy()方法对结果进行排序:

lqw.orderByAsc(Activity::getStartTime).orderByDesc(Activity::getEndTime);

在这个例子中,我们按照startTime升序排列,然后按照endTime降序排列。

不等于

lqw.ne(Activity::getActivityId, entity.getActivityId());

这行代码使用了LambdaQueryWrapperne()方法,用于在查询条件中添加一个不等于(NOT EQUAL)条件。具体来说,这个条件表示查询activityId字段值不等于entity.getActivityId()的记录。

常用方法

以下是一些常用的 LambdaQueryWrapper 方法:

  1. eq:等于

    lqw.eq(Activity::getDelFlag, "0");
  2. ne:不等于

    lqs.ne(Activity::getActivityId, entity.getActivityId());
  3. gt:大于

    lqw.gt(Activity::getStartTime, someDate);
  4. ge:大于等于

    lqw.ge(Activity::getStartTime, someDate);
  5. lt:小于

    lqw.lt(Activity::getEndTime, anotherDate);
  6. le:小于等于

    lqw.le(Activity::getEndTime, anotherDate);
  7. like:模糊查询(包含)

    lqw.like(Activity::getName, "%someName%");
  8. notLike:模糊查询(不包含)

    lqw.notLike(Activity::getName, "%someName%");
  9. in:在某个范围内

    lqw.in(Activity::getActivityId, activityIds);
  10. notIn:不在某个范围内

    lqw.notIn(Activity::getActivityId, activityIds);
  11. isNull:字段值为 null

    lqw.isNull(Activity::getSomeField);
  12. isNotNull:字段值不为 null

    lqw.isNotNull(Activity::getSomeField);
  13. groupBy:分组

    lqw.groupBy(Activity::getSomeField);
  14. orderByAsc:升序排序

    lqw.orderByAsc(Activity::getStartTime);
  15. orderByDesc:降序排序

    lqw.orderByDesc(Activity::getStartTime);
  16. and:逻辑与

    lqw.and(wq -> wq.eq(Activity::getDelFlag, "0").or().eq(Activity::getStatus, "active"));
  17. or:逻辑或

    lqw.or(wq -> wq.eq(Activity::getDelFlag, "0").and().eq(Activity::getStatus, "inactive"));
  18. nested:嵌套条件

    lqw.nested(Iwq -> iwq.eq(Activity::getDelFlag, "0").or().eq(Activity::getStatus, "active"));

这些方法可以帮助你构建复杂的查询条件。你可以根据需要组合使用这些方法来满足不同的查询需求。

注意事项

  • 确保你已经正确配置了MyBatis-Plus,并且你的实体类和数据库表之间有正确的映射关系。

  • LambdaQueryWrapper使用Java的泛型来确保类型安全,因此在编写查询时不需要进行类型转换。

  • MyBatis-Plus的API可能会随着版本的更新而发生变化,因此建议查阅最新的官方文档以获取最准确的信息。

以上就是LambdaQueryWrapper在Java代码中的一些基本用法。通过这些方法,你可以方便地构建复杂的SQL查询,而无需手动编写SQL语句。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值