- Field : 提供有关类或接口的单个字段的信息和动态访问。
getName() :返回此Field对象表示的字段的名称.
getType(): 返回一个Class对象,该对象标识此Field对象表示的字段的声明类型 。- getDeclaredField(String name) : 返回一个Field对象。
- getDeclaredFields() :返回一个Field数组
- 当然用的的不止这些,具体看业务和Class 文档
public class Conversion {
//将model中与entity中类型和名称相同的属性值赋值给对应的entity的属性,并返回entity
public static T2 TypeConversion(T1 model, T2 entity) {
List
// 这边比较数据的值
public List> getCompareData(HecYbMedCodeSyncEntity entityHis, HecYbMedCodeSyncEntity entityNow) {
List> lists = new ArrayList<>();
List> modelList = Conversion.getFiledInfo(entityHis);
List> entityList = Conversion.getFiledInfo(entityNow);
modelList.forEach(mapHis -> {
entityList.forEach(mapNow -> {
Map map = new HashMap<>();
//这边需要把获取得到的字段名 跟 医保中心的字段名做个匹配,把我们这边的字段名转成他们那边的字段名
if ( mapHis.get("name").toString().equals(mapNow.get("name").toString())) {//判断名字相同
if (!(mapHis.get("value").toString().equals(mapNow.get("value").toString())) ) {//判断值不相同 且 反射实体不为空
map.put("bgzdbm", fieldMappedEnum.getSourceFieldName()); //变更字段编码
map.put("bgzdmc", fieldMappedEnum.getDesc()); //变更字段名称
map.put("bgqz00", mapHis.get("value").toString()); //变更前值
map.put("bghz00", mapNow.get("value").toString()); //变更后值
map.put("bgsj00", DateUtil.limitDay(entityNow.getSyncTime())); //变更时间
lists.add(map);
}
}
});
});
我的设计思路是,设计一个枚举,把我数据库的字段A,和webServer接口上的字段对应上B,这样给B赋值的时候就可以通过枚举获取得到A,并且通过A就可以获取到A的值,这样就绕过了人工的给B赋值的繁琐操作。
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,十年企业及个人网站建设经验 ,为成都上千余家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,品牌网站设计,同时也为不同行业的客户提供成都网站制作、网站设计的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联。
调用如下:
FieldMappedEnum fieldMappedEnum = FieldMappedEnum.findSourceFieldByTarget(mapHis.get("name").toString());
map.put("bgzdbm", fieldMappedEnum.getSourceFieldName()); //变更字段编码
map.put("bgzdmc", fieldMappedEnum.getDesc()); //变更字段名称
....