mybatisplus批量更新局部字段包含空值

1,014 阅读1分钟
public boolean updateBusinessGroup(Long[] ids, String group, String groupName){
    boolean flag = true;
    try {
        this.update(null, Wrappers
        .<PropertyOpportunity>lambdaUpdate()
        .set(PropertyOpportunity::getEmpNo, null)
                .set(PropertyOpportunity::getEmpAccount, null)
                .set(PropertyOpportunity::getEmpName, null)
                .set(PropertyOpportunity::getGroupId, group)
                .set(PropertyOpportunity::getGroupId, groupName)
                .in(PropertyOpportunity::getId, ids));
    } catch (Exception ex){
        log.error("", ex);
        flag = false;
    }
    return flag;
}

网上很多傻X用啥TableField(updateStrategy = FieldStrategy.IGNORED) 就不考虑别人局部更新会让这个值设为空了吗??

这个还需验证 本人还未测试完成 等测试完成待更新

updateBatchByQueryWrapper(list, propertyOpportunity->new QueryWrapper<>().eq("id", propertyOpportunity.getId()));

private boolean updateBatchByQueryWrapper(Collection<PropertyOpportunity> entityList, Function<PropertyOpportunity, QueryWrapper> queryWrapperFunction) {
    String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE);
    return this.executeBatch(entityList, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> {
        MapperMethod.ParamMap param = new MapperMethod.ParamMap();
        param.put(Constants.ENTITY, entity);
        param.put(Constants.WRAPPER, queryWrapperFunction.apply(entity));
        sqlSession.update(sqlStatement, param);
    });
}

MybatisPlus1.png MybatisPlus2.png MybatisPlus3.png