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