code: public static void zeroWrapPropertiesToNull(Object bean, String... excludeFields) throws BeanConverterException {
          try {
              Map<String, PropertyDescriptor> srcDescriptors = getCachePropertyDescriptors(bean.getClass());
              Set<String> keys = srcDescriptors.keySet();
  
              List<String> excludeFieldsList = null;
              if (excludeFields != null && excludeFields.length > 0 && StringUtils.isNotBlank(excludeFields[0])) {
                  excludeFieldsList = Arrays.asList(excludeFields);
              }
  
              for (String key : keys) {
                  PropertyDescriptor srcDescriptor = srcDescriptors.get(key);
                  if (srcDescriptor == null) continue;
                  if (excludeFieldsList != null && excludeFieldsList.contains(key)) continue;
                  Object value = srcDescriptor.getReadMethod().invoke(bean);
  
                  boolean isWrapType = srcDescriptor.getPropertyType() == Long.class || srcDescriptor.getPropertyType() == Integer.class || srcDescriptor.getPropertyType() == Short.class || srcDescriptor.getPropertyType() == Double.class || srcDescriptor.getPropertyType() == Float.class;
                  if (isWrapType && value != null && Integer.parseInt(value.toString()) == 0) {
                      value = null;
                      Method writeMethod = srcDescriptor.getWriteMethod();
                      if (writeMethod != null) writeMethod.invoke(bean, value);
                  }
  
              }
          } catch (Exception e) {
              throw new BeanConverterException(e);
          }
      }
docs: 把对象值为0的包装类型属性转为null
  
  @param bean
  @param excludeFields 排除不处理的字段
  @throws BeanConverterException