MyBatis-Plus 常用条件构造方法

发布于:2025-06-10 ⋅ 阅读:(20) ⋅ 点赞:(0)

1.常用条件方法

方法

说明
eq 等于 =
ne 不等于 <>
gt 大于 >
ge 大于等于 >=
lt 小于 <
le 小于等于 <=
between BETWEEN 值1 AND 值2
notBetween NOT BETWEEN 值1 AND 值2
like LIKE '%值%'
notLike NOT LIKE '%值%'
likeLeft LIKE '%值'
likeRight LIKE '值%'
isNull 字段 IS NULL
isNotNull 字段 IS NOT NULL
in 字段 IN (值1, 值2, ...)
notIn 字段 NOT IN (值1, 值2, ...)
groupBy 分组 GROUP BY 字段
orderByAsc 排序 ORDER BY 字段 ASC
orderByDesc 排序 ORDER BY 字段 DESC
having

HAVING (SQL语句)

这是一些使用service查询的例子

//.查询笔记作者的所有粉丝select* from tb_follow where follow_user_id = ?
        List<Follow> follows = followService.query()
                .eq("follow_user_id", user.getId())
                .list();

//扣减
        boolean success = seckillVoucherService.update()
                .setSql("stock = stock - 1")//set stock=stock-1
                .eq("voucher_id", voucherOrder.getVoucherId()) //where id=? and stock>0
                .gt("stock", 0)
                .update();

2.条件构造器

MyBatis-Plus 提供了强大的条件构造器 Wrapper,用于构建复杂的查询条件。

QueryWrapper

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "张")
       .between("age", 20, 30)
       .isNotNull("email")
       .orderByDesc("age");
List<User> users = baseMapper.selectList(wrapper);


QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1)
            .ge("age", 18)
            .le("age", 30)
            .like("name", "张")
            .orderByDesc("create_time");
List<User> user=baseMapper.selectList(queryWrapper);

LambdaQueryWrapper (推荐)

//查询20—30岁,名字有张字邮箱不为空
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.like(User::getName, "张")
       .between(User::getAge, 20, 30)
       .isNotNull(User::getEmail)
       .orderByDesc(User::getAge);

List<User> users = userMapper.selectList(wrapper);

// 分页查询
IPage<User> page = new Page<>(1, 10); // 当前页,每页大小
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.ge(User::getAge, 20);
IPage<User> userPage = userMapper.selectPage(page, wrapper);