修改mybatis-plus3.0.7 saveOrUpdateBatch 方法,自定义更新条件
源代码
在service中重新定义一下查询和修改条件
修改后的代码
public boolean saveOrUpdateBatchBySqIdAndZhIdAndZbId(List<RegWeiJiZhiTiXing> list) {
Assert.notEmpty(list, "error: entityList must not be empty", new Object[0]);
Class<?> cls = this.currentModelClass();
TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
Assert.notNull(tableInfo, "error: can not execute. because can not find cache of TableInfo for entity!", new Object[0]);
String keyProperty = tableInfo.getKeyProperty();
Assert.notEmpty(keyProperty, "error: can not execute. because can not find column for id from entity!", new Object[0]);
SqlSession batchSqlSession = this.sqlSessionBatch();
Throwable var7 = null;
try {
int i = 0;
for(Iterator var9 = list.iterator(); var9.hasNext(); ++i) {
RegWeiJiZhiTiXing entity = (RegWeiJiZhiTiXing)var9.next();
Object idVal = ReflectionKit.getMethodValue(cls, entity, keyProperty);
LambdaQueryWrapper<RegWeiJiZhiTiXing> queryWrapper = Wrappers.<RegWeiJiZhiTiXing>lambdaQuery()
.eq(RegWeiJiZhiTiXing::getShenQingId, entity.getShenQingId()).eq(RegWeiJiZhiTiXing::getZuHeXiangMuId,entity.getZuHeXiangMuId())
.eq(RegWeiJiZhiTiXing::getZhiBiaoXiangMuId,entity.getZhiBiaoXiangMuId());
if (!com.baomidou.mybatisplus.core.toolkit.StringUtils.checkValNull(idVal) &&
!Objects.isNull(this.count(queryWrapper))) {
MapperMethod.ParamMap<Object> param = new MapperMethod.ParamMap();
param.put("et", entity);
param.put(Constants.WRAPPER, queryWrapper);
batchSqlSession.update(this.sqlStatement(SqlMethod.UPDATE), param);
} else {
batchSqlSession.insert(this.sqlStatement(SqlMethod.INSERT_ONE), entity);
}
if (i >= 1 && i % 1000 == 0) {
batchSqlSession.flushStatements();
}
}
batchSqlSession.flushStatements();
return true;
} catch (Throwable var20) {
var7 = var20;
throw var20;
} finally {
if (batchSqlSession != null) {
if (var7 != null) {
try {
batchSqlSession.close();
} catch (Throwable var19) {
var7.addSuppressed(var19);
}
} else {
batchSqlSession.close();
}
}
}
}