MybatisPlus------UpdateWrapper使用以及condition组装条件(八)

UpdateWrapper用于更新sql,condition用于动态组装条件,判断条件是否成立,才拼装这个sql

UpdateWrapper更新

此时update方法,只需要传入一个参数(null, updateWrapper),UpdateWrapper的set方法代表sql中的set字段,其他的方法就作为where后的条件判断。

@Test
    public void testUpdate(){
        // 将用户名中包含有a 并且 (年龄大于20或邮箱为null)的信息修改
        UpdateWrapper<BaseProcedure> updateWrapper = new UpdateWrapper<>();
        updateWrapper.like("procedure_name","a")
                .and( i -> i.gt("age",20).or().isNull("email"));
        updateWrapper.set("procedure_name","小黑").set("email","abcqq.com");
        int update = baseProcedureMapper.update(null, updateWrapper);
        System.out.println("update"+update);
    }

condition组装条件

基本所有条件都可以使用condition,进行判断,当条件成立时才拼装这个sql。

    @Test
    public void testUpdate2(){
        BaseProcedure baseProcedure = new BaseProcedure();
        QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();
        // 基本所有条件都可以使用condition,进行判断,当条件成立时才会执行
        baseProcedureQueryWrapper.
                eq(StringUtils.isNotEmpty(baseProcedure.getProcedureName()),"procedure_name",baseProcedure.getProcedureName())
                .like(StringUtils.isNotEmpty(baseProcedure.getProcedureCode()),"procedure_code",baseProcedure.getProcedureCode());
        List<BaseProcedure> list = baseProcedureMapper.selectList(baseProcedureQueryWrapper);
        System.out.println("list"+list);
    }
    }

LambdaQueryWrapper和LambdaUpdateWrapper

与普通的QueryWrapper只有一处不同点,在于字段属性的获取
平时使用

eq(StringUtils.isNotEmpty(baseProcedure.getProcedureName()),"procedure_name",baseProcedure.getProcedureName())

使用LambdaQueryWrapper则

eq(StringUtils.isNotEmpty(baseProcedure.getProcedureName()),BaseProcedure::getProcedureName,baseProcedure.getProcedureName())

其他的条件与eq使用方法一样。只有这一点不同,防止字段名写错,使用函数式接口获取实体类中某个属性对应的字段名。
LambdaQueryWrapper与LambdaUpdateWrapper一致

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐