前言
mysql从5.7.8版本开始原生支持了JSON类型数据,同时可以对JSON类型字段中的特定的值进行查询和更新等操作,通过增加JSON类型的属性可以大大的提高我们在mysql表中存储的数据的拓展性,无需每次新增字段时都进行表结构的调整,下面我们不深入讲解底层的实现原理,我们主要来梳理一下我们在日常工作中使用实践
基本环境
-
mysql版本:8.0.28
-
springboot版本: 2.2.2
-
测试表结构:
CREATE TABLE
t_json
(
id
int unsigned NOT NULL AUTO_INCREMENT,
name
varchar(100) DEFAULT NULL,
json_obj
json DEFAULT NULL,
create_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -
表结构对应的实体类:
@Data
public class JsonTest {
private Integer id;
private String name;
private JsonObj jsonObj;
} -
JsonObj类
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JsonObj {
private String data;
private int age;
}
自定义格式转换类:转换过程通过fastjson来进行,需依赖fastjson对应的pom文件
import com.aliba