Browse Source

【日期】:2019-06-26
【开发者】:luwancai@shinho.net.cn
【事由】:

增加saveOrUpdate(T,Wrapper)方法,如果条件更新不成功,最终还是会调用saveOrUpdate(T)方法。
适用场景,存在大部分存在性校验判定是否需要新增还是更新。
EXAMPLE:
之前:
A a = aService.getOne(new QueryWrapper<A>().lambda().eq(A::getName, "张三"))
if (null == a) {
a = new A();
}
a.setName("李四");
aService.saveOrUpdate(a);

现在:
A a = new A();
a.setName("李四");
aService.saveOrUpdate(a, new UpdateWrapper<A>().lambda().eq(A::getName, "张三"));

luwancai 6 years ago
parent
commit
2aa0f1f821

+ 13 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/service/IService.java

@@ -393,4 +393,17 @@ public interface IService<T> {
     default LambdaUpdateChainWrapper<T> lambdaUpdate() {
     default LambdaUpdateChainWrapper<T> lambdaUpdate() {
         return new LambdaUpdateChainWrapper<>(getBaseMapper());
         return new LambdaUpdateChainWrapper<>(getBaseMapper());
     }
     }
+
+    /**
+     * <p>
+     * 根据updateWrapper尝试更新,否继续执行saveOrUpdate(T)方法
+     * 此次修改主要是减少了此项业务代码的代码量(存在性验证之后的saveOrUpdate操作)
+     * </p>
+     *
+     * @param entity 实体对象
+     */
+    default boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper) {
+        return update(entity, updateWrapper) || saveOrUpdate(entity);
+    }
+
 }
 }