时间: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