时间:2021-07-01 10:21:17 帮助过:3人阅读
在这段代码中,使 @JsonAnySetter 注解,所有的定义属性之外的,都保存到properties 的map中,并同时转成jsonString,放到datas.
剩下的就是service ,entity 相应改动,把这个json串丢到数据库中。
查询的时候,怎么把这个json 串重新处理为对象属性呢?
/** * 机构部门表VO * @since jdk1.8 */ @Data @ApiModel(description = "机构部门表VO") public class SystemOrganVo { @ApiModelProperty("部门id") private Integer organid ; @ApiModelProperty("父部门id") private Integer parentid ; @ApiModelProperty("部门名称") private String organname ; @ApiModelProperty("层次") private String seqno ; @ApiModelProperty("部门类型") private Byte organtype ; @ApiModelProperty("地址") private String address ; @ApiModelProperty("联系人名称") private String relationuser ; @ApiModelProperty("联系人手机") private String relationtel ; @ApiModelProperty("创建时间") private Date createtime ; @ApiModelProperty("更新时间") private Date updatetime ; @ApiModelProperty("使用标志 0 未使用,1 使用") private Byte useflag ; @ApiModelProperty("创建用户id") private Integer createuserid ; @ApiModelProperty("子节点") private List<SystemOrganVo> children; @ApiModelProperty("json 数据") private String datas ; @ApiModelProperty("有效截止期") private Date invalidtime ; @ApiModelProperty("删除标志") private Byte deletflag; @ApiModelProperty("是否实体机构") private Byte organKind; @JsonAnyGetter public Map<String ,String> jsonSerialize(){ Map map =new HashMap(); map = (Map)JSON.parse(datas); return map; } }
使用 @JsonAnyGetter 把所有的data 中主键给平铺序列化到对象中。
到此已经OK了,任前端怎么添加字段,我后台坚如磐石,慨然不动,业务经理可以不用理会了····
=======================
效果虽好,缺点却不能不说,一个明显的缺点,持续加入key只有,json字段会越来越长,而且,该字段不能作为查询的条件使用,如果有可能还是使用其他的数据库存储,例如es,mongo.
数据库动态存储动态实体类实例
标签:而且 res 信息 如何 直接 关键字 并且 动态 datetime