【MyBatis Plus 3.5.1】4、条件查询器 Wrapper【Spring Boot 环境】

类结构图

在这里插入图片描述

由类结构图可见,Wrapper 内方法有限,大部分方法都封装在 AbstractWrapper 中,使用时可以用操作类对象来调用方法;如:QueryWrapperUpdateWrapper

1、selectList

查询name不为空,email不为空,age大于18的用户

@Test
public void test1(){
    // 查询name不为空,email不为空,age大于18的用户
    QueryWrapper<User> wrapper = new QueryWrapper<User>();
    wrapper.isNotNull("name")
        .isNotNull("email")
        .ge("age", 18);

    List<User> users = userMapper.selectList(wrapper);
    users.forEach(System.out::println);
}

在这里插入图片描述

2、selectOne

查询 name=Billie 的用户

如果查询结果有多个,会报错

    @Test
    public void test2(){
        // 查询 name=Billie 的用户
        QueryWrapper<User> wrapper = new QueryWrapper<>();        
        wrapper.eq("name","Billie");
        
        User user = userMapper.selectOne(wrapper);
        System.out.println(user);
    }

在这里插入图片描述

3、selectCount

根据 Wrapper 条件,查询总记录数

@Test
public void test3(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    // 查询年龄在20到30之间;between 包含20和30
    wrapper.between("age", 20, 30);

    Long count = userMapper.selectCount(wrapper);
    System.out.println(count);
}

在这里插入图片描述

在这里插入图片描述

4、模糊查询

Compare 接口

  • like = LIKE '%值%'
  • notLike = NOT LIKE '%值%'
  • likeLeft = LIKE '%值'
  • likeRight = LIKE '值%'
@Test
public void test4(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    // 名字中包含 a,不包含 e,向左侧匹配 y
    wrapper.like("name", "a")
        .notLike("name", "e")
        .likeLeft("name", "y");

    List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
    maps.forEach(System.out::println);
}

在这里插入图片描述

5、子查询 inSql

@Test
public void test5(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    // id 存在于子查询中
    wrapper.inSql("id", 
                  "select id from user where id < 5");
    List<Object> objects = userMapper.selectObjs(wrapper);
    objects.forEach(System.out::println);
}

在这里插入图片描述

在这里插入图片描述

6、排序

在这里插入图片描述

@Test
public void test6(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    // id 小于8
    wrapper.lt("id",8);
    // 按名字升序排序
    wrapper.orderByAsc("name");

    List<User> users = userMapper.selectList(wrapper);
    users.forEach(System.out::println);
}

在这里插入图片描述


版权声明:本文为tu_wer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。