mybatisplus 入门二之 Wrapper

一、 QueryWrapper

1.查询name包含a  年龄在20到30之间  同时email不为空的数据

    @Test
    public void test01()
    {
        // 查询name包含a  年龄在20到30之间  同时email不为空的数据
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.like("name","a")
                .between("age",20,30)
                .isNotNull("email");

        List<User> users = userMapper.selectList(queryWrapper);

        users.forEach(System.out::println);
    }

结果

 2.首先根据年龄降序排列 年龄相同再根据id升序排列

    @Test
    public void test02()
    {
        // 首先根据年龄降序排列  年龄相同再根据id升序排列
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.orderByDesc("age")
                .orderByAsc("id");
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

结果

 3.删除 email 为空的数据

@Test
    public void test03(){
        // 删除 email 为空的数据
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.isNull("email");
        int delete = userMapper.delete(queryWrapper);
        System.out.println("受影响的行数:"+delete);
    }

结果

 4.修改(姓名包含a并且年龄大于20)或者 email等于空的数据

@Test
    public void test04(){
        // 修改(姓名包含a并且年龄大于20)或者 email等于空的数据
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age",20)
                .like("name","a")
                .or()
                .isNull("email");
        User user = new User();
        user.setName("小明");
        user.setEmail("11111@qq.com");
        int update = userMapper.update(user, queryWrapper);
        System.out.println("受影响行数:"+update);
    }

结果

修改前

修改后 

5.修改姓名包含 a 并且(年龄大于20或者邮箱等于空)的数据


    @Test
    public void test05()
    {
        // 修改姓名包含 a 并且(年龄大于20或者邮箱等于空)的数据
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("name","a")
                .and(i -> i.gt("age",20).or().isNull("email") );
        User user = new User();
        user.setName("小红");
        user.setEmail("11111@qq.com");

        int update = userMapper.update(user, queryWrapper);
        System.out.println("受影响行数:"+update);
    }

结果: 

 修改前

 修改后

6.查询表中部分字段

    @Test
    public void test06()
    {
        // 查询表中部分字段
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("name","age");

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

结果

 7.子查询

    @Test
    public void test07()
    {
        // 字查询,先查询出id小于等于3的id,然后in(小于等于3的ID)
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.inSql("id","select id from user where id <= 3");

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

结果

 二、condition

通过 condition 条件判断查询数据
    @Test
    public void test08()
    {
        // 实际中,一般根据用户输入的条件查询,某些字段用户可能没有输入,所有要做非空判断
        String name = "小";
        Integer ageBegin = null;
        Integer ageEnd = 15;

        // 通过 condition 条件判断查询数据
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(name),"name",name)
                .gt(ageBegin != null,"age",ageBegin)
                .lt(ageEnd != null,"age",ageEnd);
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }

 从打印的sql语句中可以看出,做了姓名模糊匹配和年龄小于15过滤,年龄大于条件没有,因为ageBegin等于 null。

结果

 三、LambdaQueryWrapper

LambdaQueryWrapper 和 QueryWrapper 的区别就是 "name" 改成了 User::getName ,防止我们写错 
    @Test
    public void test09()
    {
        String name = "小";
        Integer ageBegin = null;
        Integer ageEnd = 15;
        // LambdaQueryWrapper 和 QueryWrapper 的区别就是 "name" 改成了 User::getName ,防止我们写错
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.like(StringUtils.isNotBlank(name),User::getName,name)
                .gt(ageBegin != null,User::getAge,ageBegin)
                .lt(ageEnd != null,User::getAge,ageEnd);

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

 结果

四、LambdaUpdateWrapper

    @Test
    public void test10() {
        //组装set子句
        LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper
                .set(User::getAge, 18)
                .set(User::getEmail, "user@atguigu.com")
                .like(User::getName, "a")
                .and(i -> i.lt(User::getAge, 24).or().isNull(User::getEmail)); 
        //lambda表达式内的逻辑优先运算
        User user = new User();
        int result = userMapper.update(user, updateWrapper);
        System.out.println("受影响的行数:" + result);
    }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值