1.三方返回的json字段多,要存入数据库,依次set重复工作量大
解决方法:
1.用反射的原理:直接上代码
private void setField(JSONObject item, TestEntity TestEntity) {
for (String key : item.keySet()) {
if (StringUtil.isBlank(item.getString(key))) {
continue;
}
try {
Field field = TestEntity.getClass().getDeclaredField(key.toLowerCase());
field.setAccessible(true);
if (Integer.class.equals(field.getType())) {
field.set(TestEntity, item.getInteger(key));
} else if (Long.class.equals(field.getType())) {
field.set(TestEntity, item.getLong(key));
} else if (String.class.equals(field.getType())) {
field.set(TestEntity, item.getString(key));
} else if (Double.class.equals(field.getType())) {
field.set(TestEntity, item.getDouble(key));
} else if (BigDecimal.class.equals(field.getType())) {
field.set(TestEntity, item.getBigDecimal(key));
}
} catch (NoSuchFieldException | IllegalAccessException e) {
log.error("{}设置返回值异常", huaCeEnums().name, e);
}
}
}
这么做的前提是json字段格式上统一,遵循驼峰
2.修改MyBatis自动生成工具
Entity.java.vm
@JSONField(name = "add_time") private Date addTime;
使用时直接转化
TestEntity test = result.toJavaObject(TestEntity.class);