MyBatis-Plus 常用条件构造方法
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);