Mybatis Plus saveOrUpdate(T entity, Wrapper<T> updateWrapper)


	/**
     * <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版权协议,转载请附上原文出处链接和本声明。