0
点赞
收藏
分享

微信扫一扫

Mybatis-Plus根据条件更新(条件构造器)

boom莎卡拉卡 2022-04-27 阅读 95
java

>Mybatis-Plus根据条件更新(条件构造器)

在 Mybatis-Plus 项目中,很多时候需要根据条件更新特定的数据行,这时候可以使用到提供的 update() 方法。

下面以 PostCategories 对象为例简单演示下使用的方法。
1、创建对象并填入要更新的字段数据
例如更新 homePage 字段值为 false

PostCategories updateMessage = new PostCategories();
updateMessage.setHomePage(false);

2、创建条件构造器和查询条件
new QueryWrapper() 为条件构造器;

eq(“homePage”, true) 即是查询条件: where homePage = true,条件根据需要添加。

postCategoriesMapper.update(updateMessage, new QueryWrapper<PostCategories>().eq("homePage", true));

3、查看打印的sql语句
略
这样就达到了条件更新的目的。
特别注意:
1.使用这种方式,会覆盖掉原本update方法的特性,比如自动根据ID比对数据进行修改,这里一定注意加上ID判断(该有的所有判断),具体请看错误实例一:
2.传进条件构造器里边的column(字段名字),是数据库里边的字段名字,就是这个传进条件构造器里的字段名字,会被直接拼接到SQL里边,如果写实体类名字,就会报错,具体看错误实例二:

4.错误的实例:
这里没有在条件构造器里塞入 id值 判断 , 如此以来,mybatisPlus就不会在条件的地方拼接 id判断

 @Override
    public int update(AlarmInformVO vo) {
        AlarmInform alarmInform = voToEntity(vo);
        int i = alarmInformMapper.update(alarmInform,
                new QueryWrapper<AlarmInform>().eq("valid", 0));
        return i;
    }

    private AlarmInform voToEntity(AlarmInformVO vo){
        AlarmInform alarmInform = new AlarmInform();
        BeanUtils.copyProperties(vo,alarmInform);
        return alarmInform;
    }

在这里插入图片描述
5.正确的实例一

@Override
    public int update(AlarmInformVO vo) {
        AlarmInform alarmInform = voToEntity(vo);
        QueryWrapper<AlarmInform> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id",vo.getId());
        queryWrapper.eq("valid", 0);
        int i = alarmInformMapper.update(alarmInform,queryWrapper);
        return i;
    }

在这里插入图片描述
对! 条件构造器QueryWrapper是可以点拼多个条件的,尽情往后点,往后加就可以了
6.错误实例二
column 里边的参数,K值是数据库中的字段名,不是实体类中的变量名,这一点要注意!!!
在这里插入图片描述
7.正确的实例

@Override
    public AlarmDisposeVO findById(Long id) {
        // 查询报警通知信息
        AlarmInform alarmInform = alarmInformService.findById(id);
        AlarmInformVO alarmInformVO = new AlarmInformVO();
        try {
            if (alarmInform != null) BeanUtils.copyProperties(alarmInform,alarmInformVO,new String[]{"startdTime","endTime"});
        } catch (BeansException e) {
            logger.error("alarmInform 拷贝失败,程序错误!!" + alarmInform);
        }
        QueryWrapper<AlarmDispose> alarmDisposeQueryWrapper = new QueryWrapper<>();
        // 重点在这里!!!
        alarmDisposeQueryWrapper.eq("alarm_inform_id",id).eq("valid",0);
        AlarmDispose alarmDispose = alarmDisposeMapper.selectOne(alarmDisposeQueryWrapper);
        AlarmDisposeVO alarmDisposeVO = new AlarmDisposeVO();
        try {
            if (alarmDispose !=null) BeanUtils.copyProperties(alarmDispose,alarmDisposeVO,new String[]{"alarmInformVO"});
        } catch (Exception e) {
            logger.error("alarmDispose 拷贝失败,程序错误!!" +alarmDispose);
        }
        alarmDisposeVO.setAlarmInformVO(alarmInformVO);
        return alarmDisposeVO;
    }
举报

相关推荐

0 条评论