在 MyBatis-Plus 的 update 方法中,第一个参数给null和给一个实体对象的区别是什么

在 MyBatis-Plus 的 update 方法中,第一个参数代表要更新的实体对象,这个参数的区别主要体现在以下几个方面:

1.指定实体对象 vs. 不指定实体对象
指定实体对象(非 null):

UpdateWrapper<ArchiveInfoDAO> updateWrapper = new UpdateWrapper<>();
            updateWrapper.eq("RFID", cabinetCellInfoDAO.getRfid());
            //当柜子返回的rfid为空时,更新档案状态为借出,否则更新档案状态为在柜
            updateWrapper.set("ARCHIVE_STATUS", cabinetCellInfoDAO.getRfid() == null ? 5 : 2);

如果你传入一个实体对象,则此对象中的字段会被视为要更新到数据库的字段。例如,如果实体对象的某个字段被修改了,调用 update 方法时就会将这个字段的值更新到数据库中的对应列。
这种方式通常用于根据某些条件更新特定记录,同时更新某些特定字段。一般情况下,如果想通过主键ID或者唯一索引等条件,而不使用自定义条件进行数据更新时,可以使用这种方式。

ArchiveInfoDAO archiveInfo = new ArchiveInfoDAO();
// 要更新的记录的ID
archiveInfo.setId(1); 
 // 更新状态
archiveInfo.setArchiveStatus(0);
 // 实体对象作为第一个参数
archiveInfoMapper.update(archiveInfo, updateWrapper);

2.不指定实体对象(传 null):

如果第一个参数为 null,那么更新操作仅依赖于传入的 updateWrapper 中定义的条件和需要更新的字段。这种方式适用于只想根据条件更新,而不需要提供整个实体对象的情况。
对于一些需要批量更新或者根据复杂条件更新的场景,使用 null 可以简化操作。这个时候就会默认使用updateWrapper中自定义的条件进行更新。

 // 不提供实体对象,仅依赖 updateWrapper
archiveInfoMapper.update(null, updateWrapper);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值