当前位置:   article > 正文

QueryWrapper常用方法_querywrapper 子查询

querywrapper 子查询

QueryWrapper常用方法
在这里插入图片描述
MybatisPlus 使用QueryWrapper测试用例
一、ge、gt、le、lt、isNull、isNotNull

@Test
public void testQuery() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper
            .isNull("name")
            .ge("age", 12)
            .isNotNull("email");
        int result = userMapper.delete(queryWrapper);
    System.out.println("delete return count = " + result);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

二、eq、ne

@Test
public void testSelectOne() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("name", "Tom");
    Useruser = userMapper.selectOne(queryWrapper);//只能返回一条记录,多余一条则抛出异常
    System.out.println(user);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三、between、notBetween

@Test
public void testSelectCount() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.between("age", 20, 30);
        Integer count = userMapper.selectCount(queryWrapper); //返回数据数量
    System.out.println(count);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

四、like、notLike、likeLeft、likeRight

@Test
public void testSelectMaps() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper
            .select("name", "age")
            .like("name", "e")
            .likeRight("email", "5");
    List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);//返回值是Map列表
    maps.forEach(System.out::println);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

五、orderBy、orderByDesc、orderByAsc

@Test
public void testSelectListOrderBy() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.orderByDesc("age", "id");
    List<User>users = userMapper.selectList(queryWrapper);
    users.forEach(System.out::println);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

六、插入insert

@Test
public void save() {
    User user = new User();
    user.setAge(23);
    user.setEmail("344");
    user.setName("test");
    // 1.使用service新增
    userService.save(user);
    // 2.使用mapper 新增
    userMapper.insert(user);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

七、删除remove

@Test
public void delete() {
    // 根据条件删除
    userService.remove(Wrappers.<User>query().lambda().eq(User::getAge, 3));
}
  • 1
  • 2
  • 3
  • 4
  • 5

八、修改update

@Test
public void update() {
    User user = new User();
    user.setAge(23);
    user.setEmail("344");
    user.setName("test333");
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
    updateWrapper.eq("id","1");
    // 1.user 中封装修改的属性值, updateWrapper 中封装修改的条件参数值
    userService.update(user,updateWrapper);

    // 2.根据条件修改对应的参数属性值
    userService.update(Wrappers.<User>update().lambda().set(User::getName, "2").eq(User::getAge, 23));    
    // 3.判断参数是否为空,并进行修改     String name = "name";     userService.update(Wrappers.<User>update().lambda().set(StringUtils.isNotBlank(name),User::getName, name).eq(User::getAge, 23));
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

示例:


QueryWrapper<实体类> queryWrapper = new QueryWrapper<>();

List<实体类> practice_log = aaScoreMapper.selectList(queryWrapper.eq("xxxx",jsonObject.getString("xxxx")).eq("yyyyy",jsonObject.getString("yyyy")).eq("uuuuu","uuuuu"));

  • 1
  • 2
  • 3
  • 4
  • 5

子查询和嵌套查询

//根据id查询
        User user = userMapper.selectById(1);
        System.out.println("根据id查询" + user);
 
        //普通查询
        System.out.println("----- 普通查询 ------");
        List<User> plainUsers = userMapper.selectList(new QueryWrapper<User>().eq("role_id", 2L).orderByAsc("age"));
        List<User> lambdaUsers = userMapper.selectList(new QueryWrapper<User>().lambda().eq(User::getRoleId, 2L));
        System.out.println("查询默认未删除 deleted=0" + plainUsers);
 
 
 
        //子查询
        System.out.println("----- 子查询 ------");
        List<User> plainUsers2 = userMapper.selectList(new QueryWrapper<User>()
                .inSql("role_id", "select id from role where id = 2"));
        System.out.println("子查询"+plainUsers2);
        List<User> lambdaUsers2 = userMapper.selectList(new QueryWrapper<User>().lambda()
                .inSql(User::getRoleId, "select id from role where id = 2"));
        System.out.println("子查询"+lambdaUsers2);
 
 
 
 
        //带嵌套查询
        System.out.println("----- 带嵌套查询 ------");
        List<User> plainUsers3 = userMapper.selectList(new QueryWrapper<User>()
                .nested(i -> i.eq("role_id", 2L).or().eq("role_id", 3L))
                .and(i -> i.ge("age", 20)
                ));
        List<User> lambdaUsers3 = userMapper.selectList(new QueryWrapper<User>().lambda()
                .nested(i -> i.eq(User::getRoleId, 2L).or().eq(User::getRoleId, 3L))
                .and(i -> i.ge(User::getAge, 20)));
        System.out.println("带嵌套查询"+plainUsers3);
        System.out.println("带嵌套查询"+lambdaUsers3);
 
        //自定义(sql注入)
        System.out.println("----- 自定义(sql注入) ------");
        List<User> plainUsers4 = userMapper.selectList(new QueryWrapper<User>()
                .apply("role_id = 2"));

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

注意:

  1. 优先顺序:!>or>and所以andor在一起,先计算or,在这里有括号也没用。
  2. queryWrapper增加eq或者其他标签,会在后面增加,所以需要重新new一下。
  3. 子查询略复杂,请酌定使用。
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/article/detail/43697
推荐阅读
  

闽ICP备14008679号