当前位置:Gxlcms > 数据库问题 > 数据库动态存储动态实体类实例

数据库动态存储动态实体类实例

时间:2021-07-01 10:21:17 帮助过:3人阅读

= "机构部门表Bo") public class SystemOrganBo implements Serializable { @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 Date invalidtime ; @ApiModelProperty("删除标志") private Byte deletflag; private Byte organKind; @ApiModelProperty("JSON存储明细数据") private String datas; private Map properties=new HashMap() ; @JsonAnySetter public void set(String key ,Object object){ properties.put(key,object); datas=new JSONObject(properties).toJSONString(); } }

在这段代码中,使 @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   

人气教程排行