QueryWrapper常用方法以及实例演示

  1. QueryWrapper 简介
    • QueryWrapper 是 MyBatis - Plus 提供的一个条件构造器,用于构建 SQL 查询的条件。它可以帮助我们方便地进行各种复杂的查询操作,比如等于、不等于、大于、小于、模糊查询等。通过它可以动态地构建查询条件,使代码更加灵活。
  2. 常用方法及案例
    • eq(等于)方法
      • 功能:用于构建等于条件,相当于 SQL 中的column = value
      • 案例
        • 假设我们有一个User实体类,其中有一个id字段和name字段。如果我们要查询id等于 1 的用户,代码如下:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public User findUserById(int id) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return userMapper.selectOne(queryWrapper);
    }
}

  • ne(不等于)方法
    • 功能:用于构建不等于条件,相当于 SQL 中的column!= value
    • 案例
      • 要查询id不等于 1 的用户,代码如下:
public List<User> findUsersNotById(int id) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.ne("id", id);
    return userMapper.selectList(queryWrapper);
}

  • gt(大于)方法
    • 功能:用于构建大于条件,相当于 SQL 中的column > value
    • 案例
      • 假设User实体类中有一个age字段,要查询年龄大于 20 的用户:
public List<User> findUsersGreaterThanAge(int age) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.gt("age", age);
    return userMapper.selectList(queryWrapper);
}

  • ge(大于等于)方法
    • 功能:用于构建大于等于条件,相当于 SQL 中的column >= value
    • 案例
      • 要查询年龄大于等于 20 的用户:
public List<User> findUsersGreaterEqualAge(int age) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.ge("age", age);
    return userMapper.selectList(queryWrapper);
}

  • lt(小于)方法
    • 功能:用于构建小于条件,相当于 SQL 中的column < value
    • 案例
      • 要查询年龄小于 20 的用户:
public List<User> findUsersLessThanAge(int age) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lt("age", age);
    return userMapper.selectList(queryWrapper);
}

  • le(小于等于)方法
    • 功能:用于构建小于等于条件,相当于 SQL 中的column <= value
    • 案例
      • 要查询年龄小于等于 20 的用户:
public List<User> findUsersLessEqualAge(int age) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.le("age", age);
    return userMapper.selectList(queryWrapper);
}

  • like(模糊查询)方法
    • 功能:用于构建模糊查询条件,相当于 SQL 中的column LIKE '%value%'
    • 案例
      • 假设要查询名字中包含 “张” 字的用户:
public List<User> findUsersLikeName(String namePart) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.like("name", namePart);
    return userMapper.selectList(queryWrapper);
}

  • leftLike(左模糊查询)方法
    • 功能:用于构建左模糊查询条件,相当于 SQL 中的column LIKE '%value'
    • 案例
      • 要查询名字以 “张” 开头的用户:
public List<User> findUsersLeftLikeName(String nameStart) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.leftLike("name", nameStart);
    return userMapper.selectList(queryWrapper);
}

  • rightLike(右模糊查询)方法
    • 功能:用于构建右模糊查询条件,相当于 SQL 中的column LIKE 'value%'
    • 案例
      • 要查询名字以 “三” 结尾的用户:
public List<User> findUsersRightLikeName(String nameEnd) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.rightLike("name", nameEnd);
    return userMapper.selectList(queryWrapper);
}

  • in(包含在指定集合中)方法
    • 功能:用于构建IN条件,相当于 SQL 中的column IN (value1, value2,...)
    • 案例
      • 假设要查询id为 1、2、3 的用户:
public List<User> findUsersByIds(List<Integer> ids) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.in("id", ids);
    return userMapper.selectList(queryWrapper);
}

  • notIn(不包含在指定集合中)方法
    • 功能:用于构建NOT IN条件,相当于 SQL 中的column NOT IN (value1, value2,...)
    • 案例
      • 要查询id不为 1、2、3 的用户:
public List<User> findUsersNotByIds(List<Integer> ids) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.notIn("id", ids);
    return userMapper.selectList(queryWrapper);
}

  • orderByAsc(升序排序)方法
    • 功能:用于按照指定字段升序排序,相当于 SQL 中的ORDER BY column ASC
    • 案例
      • 要按照年龄升序查询用户:
public List<User> findUsersOrderByAgeAsc() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.orderByAsc("age");
    return userMapper.selectList(queryWrapper);
}

  • orderByDesc(降序排序)方法
    • 功能:用于按照指定字段降序排序,相当于 SQL 中的ORDER BY column DESC
    • 案例
      • 要按照年龄降序查询用户:
public List<User> findUsersOrderByAgeDesc() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.orderByDesc("age");
    return userMapper.selectList(queryWrapper);
}

  • groupBy(分组)方法
    • 功能:用于构建分组条件,相当于 SQL 中的GROUP BY column
    • 案例
      • 假设要按照部门分组查询用户数量(假设有一个department字段):
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public List<Map<String, Object>> groupUsersByDepartment() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("department", "count(*) as count");
        queryWrapper.groupBy("department");
        return userMapper.selectMaps(queryWrapper);
    }
}

  • having(分组后筛选)方法
    • 功能:用于在分组后进行筛选,相当于 SQL 中的HAVING condition
    • 案例
      • 要查询部门人数大于 3 的部门(基于上面的分组查询):
public List<Map<String, Object>> groupUsersByDepartmentHaving() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.select("department", "count(*) as count");
    queryWrapper.groupBy("department");
    queryWrapper.having("count > 3");
    return userMapper.selectMaps(queryWrapper);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值