/**
* <p>
* 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
* 此次修改主要是减少了此项业务代码的代码量(存在性验证之后的saveOrUpdate操作)
* </p>
*
* @param entity 实体对象
*/
default boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper) {
return update(entity, updateWrapper) || saveOrUpdate(entity);
}
/**
* 根据 whereEntity 条件,更新记录
*
* @param entity 实体对象
* @param updateWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper}
*/
default boolean update(T entity, Wrapper<T> updateWrapper) {
return SqlHelper.retBool(getBaseMapper().update(entity, updateWrapper));
}
/**
* TableId 注解存在更新记录,否插入一条记录
*
* @param entity 实体对象
*/
boolean saveOrUpdate(T entity);
执行顺序
步骤1:
- 根据 enitity 和 wrapper 进行更新
- 如果更新成功则直接return
步骤2:
- 在第一步失败的前提下,会根据entity 实例中是否存在主键进行判断
- 如果存在主键id,则根据主键id 进行一次查询,判断是否存在,存在执行更新,不存在就执行插入
- 最后返回执行结果
版权声明:本文为qq_41076210原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。