以前当业务数据结构变化时,往往需要采用的方案是:
- 修改表结构增加字段
- 遇到数据结构有list结构时,新建1对多的关联子表
- 用字典表表示字段的增加
以上方案对代码侵入性很强,同时与旧业务数据结构不兼容。导致代码从实体类
、Dao、Service、Controller层都要修改。
随着NOSQL数据库的广泛应用,可扩展的存储方式在关系型数据库中也有了很好的支持,最新的MySQL5.7中就新增加了一个数据类型JSON,使用mysql的json类型字段做扩展字段,可以以json串形式动态的存储任意结构的数据,包括list结构的数据也不必再创建子表。代码的实体类和Dao层不必修改,其他层代码修改量也能够减少。
Mysql常见json字段操作
Mysql5.7开始支持json字段
创建带有json字段的表micro_test,其中extcol为json类型字段
CREATE TABLE `micro_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `meta_name` varchar(100) DEFAULT NULL COMMENT '元数据名称', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `extcol` json DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB CHARSET=utf8;
插入json字段
可按照json字符串插入json字段
Insert into micro_test (extcol,meta_name,create_time)values('{"name":"tomcat