//因为有些字段要初始化成null,因此使用反射将将值挨个放到updateWrapper中更新
UpdateWrapper<WttPoint> updateWrapper = new UpdateWrapper<>();
Field[] fields = ReflectUtil.getFields(WttPoint.class);
for (Field field : fields) {
//将驼峰字段 转成 数据库字段
String name = this.camelToUnderscore(field.getName());
Object updateValue = ReflectUtil.getFieldValue(point, field);
updateWrapper.set(name, updateValue);
}
updateWrapper.lambda().eq(WttPoint::getId, point.getId());
this.update(updateWrapper);
/**
* 将驼峰命名转换为下划线命名。
*
* @param camelCase 驼峰命名的字符串
* @return 下划线命名的字符串
*/
public String camelToUnderscore(String camelCase) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < camelCase.length(); i++) {
char ch = camelCase.charAt(i);
if (Character.isUpperCase(ch)) {
// 如果不是第一个字符,则添加下划线
if (i > 0) {
result.append('_');
}
result.append(Character.toLowerCase(ch));
} else {
result.append(ch);
}
}
return result.toString();
}