类 FieldMapper
java.lang.Object
com.midi.his.sdk.mapper.FieldMapper
报文字段(
UPPER_SNAKE)与 DTO 属性(lowerCamel)之间的双向映射。
规则刻意保持简单可逆:EXAM_MCLASS_CODE <-> examMclassCode。命名不符合该规则时,
用 HisField 在属性上标注真实字段名;标注值会统一去空白并转大写,与报文名同一口径。
构建映射表时对以下三种情况直接抛 HisProtocolException,不会静默丢掉字段:
属性名含连续大写(缩写词推不出真实字段名)、@HisField 取值去空白后为空、
两个不同名属性映射到同一个报文名。子类与父类的同名属性属于字段遮蔽,只保留子类属性。
每个类的映射表在首次使用时构建并缓存,之后只读,因此本类是线程安全的。
SDK 的 DTO 一律用 String 承载报文中,映射过程不做任何类型转换。
-
方法概要
修饰符和类型方法说明fieldNames(Class<?> type) 报文字段名形式的属性清单,用于校验必填项。static StringUPPER_SNAKE转lowerCamel。把 DTO 转成按声明顺序排列的报文字段表,值为null的属性不输出。static <T> T把一行报文数据装进 DTO。static StringtoUpperSnake(String name)
-
方法详细资料
-
toObject
把一行报文数据装进 DTO。- 类型参数:
T- 目标类型- 参数:
fields- 报文字段表,键为大写下划线字段名type- 目标类型,必须有不带参数的构造器- 返回:
- 填充后的对象;
fields为null或空时返回null - 抛出:
HisProtocolException- 目标类不可实例化,或字段类型不是String
-
toFields
把 DTO 转成按声明顺序排列的报文字段表,值为null的属性不输出。- 参数:
dto- 数据传输对象- 返回:
- 有序字段表
- 抛出:
HisProtocolException- 反射失败
-
fieldNames
报文字段名形式的属性清单,用于校验必填项。- 参数:
type- DTO 类型- 返回:
- 字段名列表,按声明顺序
-
toCamel
UPPER_SNAKE转lowerCamel。- 参数:
name- 报文字段名- 返回:
- 属性名
-
toUpperSnake
lowerCamel转UPPER_SNAKE,逐字母转换,是toCamel(java.lang.String)的逆运算 (EXAM_I_D <-> examID)。缩写词的真实报文名无法由属性名推出,映射时须用HisField标注,映射表不会替调用方猜。- 参数:
name- 属性名- 返回:
- 报文字段名
-