所需组件

背景

标准数据模块用于处理枚举类型数据转义问题。例如,某系统中,人员类型有管理员、普通用户两类,分别用枚举值0和1表示,在后台存储时我们只会保存0和1这样的枚举值,而前端展示时又希望能显示"管理员"、"普通用户"这样的字样,此时就可以通过标准数据进行枚举值转义。

标准数据模块提供了如下能力: - 在pojo对象中插入指定注解,使在组装返回报文时自动返回对应的转义后字段 - 提供按照枚举值查询对应的转义值的能力 - 提供RESTFUL接口,一次查询某一类枚举值的所有枚举-转义字段,适合前端渲染下拉列表这样的场景

使用详解

加入标准数据模块后,框架会在启动时读取数据库中dict_parm_cfg表的内容并保存在内存中。基于MySql语法的建表语句如下,Oracle数据库可以以此类推

create table dict_parm_cfg
(
  parm_tpcd varchar(100) default '' not null comment '字典类型代码',
  parm_cd varchar(100) default '' not null comment '字典代码',
  parval varchar(240) default '' not null comment '字典取值',
  parm_tpnm varchar(240) default '' null comment '字典类型名称',
  primary key (parm_tpcd, parm_cd)
) comment '数据字典表';

该表中: - parm_tpcd 为字典类型代码,例如"人员类型"对应的代码 - parm_cd 为字典代码,例如"管理员"对应的代码0 - parval 为字典取值,例如"管理员" - parm_tpnm 为字典类型的说明,可以为空

返回报文转义

例如,有一个响应报文对应JAVA类:

public class TestOutVo {
    @StandCode("carModel")
    private String val;
}

使用@StandCode注解,后面的值carModel时dict_parm_cfg表中对应的parm_tpcd字段。 假设dict_parm_cfg表中有如下数:

parm_tpcd parm_cd parval parm_tpnm
carModel 1 轿车
carModel 2 越野车

那么当返回对象TestOutVo中val字段的值为1时,会自动生成如下的json报文

{
val: "1",
val_desc: "轿车"
}

其中val_desc字段是框架根据parm_tpcd='carModel',parm_cd='1'的取值在表中匹配转义的

手动查询枚举值对应的取值

可以在需要的类中注入

@Autowired
private StandCodeResolver standCodeResolver;

然后在使用时调用:

standCodeResolver.getValue("carModel", "1");

就可以得到对应的值“轿车”

同时该对象还提供getStandCodeListByParmTpCd方法,可以根据parm_tpcd返回全部取值列表:

standCodeResolver.getStandCodeListByParmTpCd("carModel")

自动实现RESTFUL接口,获得按类型查询枚举值集合的能力

标准数据模块默认提供一个RESTFUL接口,提供按类型查询枚举值集合的能力,默认url为standcode/{parm_tpcd},例如按照默认配置访问URL http://localhost:8080/standcode/carModel, 返回:

[
{
parmTpcd: "carModel",
parmCd: "1",
parval: "轿车",
parmTpnm: ""
},
{
parmTpcd: "carModel",
parmCd: "2",
parval: "越野车",
parmTpnm: ""
}
]

可配置项