QueryWrapper:查询条件封装

925 阅读1分钟

以查询用户信息为例

组装查询条件

@Test
public void test01(){
    //查询信息包含a并且年龄在20到30之间的,邮箱信息不为null的用户
    QueryWrapper<User> queryWrapper=new QueryWrapper<>();
    queryWrapper.like("name","a").between("age",20,30).isNotNull("email");
    List<User> list = userMapper.selectList(queryWrapper);
    list.forEach(System.out::println);
}

组装排序条件

@Test
public void test02(){
    //查询用户信息,按照年龄降序排列,若年龄相同,则按照id升序排列
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.orderByDesc("age").orderByAsc("id");
    List<User> list = userMapper.selectList(queryWrapper);
    list.forEach(System.out::println);
}

组装删除条件

@Test
public void test03(){
    //删除邮箱地址为null的用户信息
    QueryWrapper<User> queryWrapper=new QueryWrapper<>();
    queryWrapper.isNull("email");
    userMapper.delete(queryWrapper);
}

实现子查询

@Test
public void test07(){
    //子查询:查询id小于等于100的信息
    QueryWrapper<User> queryWrapper=new QueryWrapper<>();
    queryWrapper.inSql("id","select id from user where id<=100");
    List<User> list = userMapper.selectList(queryWrapper);
    list.forEach(System.out::println);
}

条件优先级

@Test
public void test05(){
    //条件优先级
    //将用户名中含有a并且(年龄大于20或邮箱null)的用户信息修改
    //lambda中的条件优先执行
    QueryWrapper<User> queryWrapper=new QueryWrapper<>();
    queryWrapper.like("name","a").and(i->i.gt("age",20).or().isNull("email"));
    User user=new User();
    user.setName("Ming");
    user.setEmail("Ming@qq.com");
    userMapper.update(user,queryWrapper);
}