前言
对于关系型数据,我们经常会碰到一些复杂的业务场景需要设计大宽表去存储一对多和多对多关系的数据,大宽表这样的反范式的设计,存在筛选不方便、不支持灵活动态拓展无法直观的表达一对多和多对多的关系等诸多缺点,而mysql8.0的json类型支持直接存储json数据可以很好的解决上面的缺点。
案例一 天眼查企业展台网页数据
1.案例介绍
以下面天眼查企业展台为例,我们要存储多家企业的基本信息、主要人员和股东信息这些数据。
2.表结构设计
以往的设计思路我们则至少需要三张表存储这些数据且查询主要人员和股东信息这些一对多关系数据也不太方便,现在我们可以将一对多关系数据直接用json数据存储,那么我们只需要设计一张表即可,以下是表结构
1 | create table company_basic_info |
3.后端代码
采用mybatis-plus持久层框架3.4.0版本,框架封装好了CRUD接口,简单易用,以下主要介绍如何接入json类型字段
Entiy代码
主要人员和股东信息这两个json字段注意要添加@TableField(typeHandler = acksonTypeHandler.class),CompanyBasicInfoEntity实体类中@TableName注解映射中配置映射表名和resultMap是必须的后续xml中会用到,
SpanBaseEntity已封装好了delete_flag,create_by,…,version基础字段
1 | /** |
1 | /** |
1 | /** |
Mapper和Mapper XML代码
1 | /** |
注意main_officer和sharehd_info这两个json字段resultMap写法
1 |
|
Service代码
举例CRU操作
1 | /** |
案例二 自定义动态表单
整理中敬请期待。。。
- 本文作者: yinshuang
- 本文链接: https://yinshuang007.github.io/2023/06/11/SpringBoot中使用Mysql8的json类型存储json数据实现CRUD操作/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!