当前使用版本(必填,否则不予处理)

3.3.3

CacheServiceImpl类 testCustomSaveOrUpdateBatch方法 //name为空写入,不为空按条件更新 boolean result = saveOrUpdateBatch(Arrays.asList(model1, model2), entity -> entity.getName() == null, (entity) -> new QueryWrapper().lambda().eq(CacheModel::getName, entity.getName()));

建议:上面的方法加个 keyProperty 去查询 (根据传入的值去做查询,没有就写入,有的话就按条件更新) 是不是更好? 比如: boolean result = saveOrUpdateBatch( Arrays.asList(model1, model2), entity -> entity.getName() == null, String keyProperty, (entity) -> new QueryWrapper().lambda().eq(CacheModel::getName, entity.getName()));

Comment From: nieqiurong

你考虑的太少了,测试用例我只是简单的写了个,增加当前方法是为了能让你们能更大程度的灵活控制save和update的判断,虽然我也没太看懂你加的这个keyProperty是用来干啥的,可能是想替换entity -> entity.getName() == null这一句把,但如果是复合索引,非唯一索引呢,又或者需要调用其他服务接口来判断这条记录是不是存在,至于你想的那些,你可以基于这个去自定义封装,框架不限制你,另外加个keyProperty也需要硬编码一些属性名。

//name为空写入,不为空按条件更新
boolean result = saveOrUpdateBatch(Arrays.asList(model1, model2), entity -> {
    boolean exists = entity.getName() == null
        || getOne(new QueryWrapper<CacheModel>().lambda().eq(CacheModel::getName, entity.getName())) == null;
    //save do some thing
    entity.setName("旺旺");
    return exists;
}, (entity) -> {
    //update do some thing
    return new QueryWrapper<CacheModel>().lambda().eq(CacheModel::getName, entity.getName());
});
return model1.getId() != null && model2.getId() == null && result;

Comment From: biaogehao

十分感谢老哥回复。

这个方法3.3.3里发布哦。 大概啥时候发布哈

Comment From: nieqiurong

十分感谢老哥回复。

这个方法3.3.3里发布哦。 大概啥时候发布哈

暂时还不清楚,可能还要改改。

Comment From: biaogehao

好滴 感谢

Comment From: wubumihuo

好滴 感谢

你好,请问这个功能什么时候上线?

Comment From: wubumihuo

十分感谢老哥回复。 这个方法3.3.3里发布哦。 大概啥时候发布哈

暂时还不清楚,可能还要改改。

你好,请问这个功能什么时候上线