java灵活使用mysql中json类型字段存储数据详解
日常数据库存储数据时经常会碰见一对多的数据结构类型,例如一笔订单中包含多个商品数据,一般情况下,可能会设计一个order表,一个sku表,但如果就想用一个表去存储这些订单和商品数据,那么应该如何去设计order表呢?这种情况下就可以使用万能json类型字段进行存储订单与商品一对多的数据结构了.
建表语句:
CREATE TABLE `bd_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `orderId` varchar(55) DEFAULT NULL COMMENT '订单id', `nick` varchar(55) DEFAULT NULL COMMENT '用户昵称', `skuInfo` json DEFAULT NULL COMMENT '商品信息', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单表';
数据如下:

存入数据:
商品实体类:
@Data
public class SkuInfo {
private String name;
private String price;
private String skuId;
}订单实体类:
@Data
public class BdOrder {
private Long id;
private String orderId;
private String nick;
@TableField(value = "skuInfo",typeHandler = FastjsonTypeHandler.class)
private Object skuInfo;
}存入数据库: 直接构造数据结构,插入数据库即可
List<SkuInfo> list = new ArrayList<>();
SkuInfo skuInfo = new SkuInfo();
skuInfo.setName("华为mate70");
skuInfo.setPrice("6000.00");
skuInfo.setSkuId("12345678");
list.add(skuInfo);
BdOrder bdOrder = new BdOrder();
bdOrder.setOrderId("111");
bdOrder.setNick("张三");
bdOrder.setSkuInfo(list);
//执行插入sql从数据库查询数据: 需要通过json去解析转为list
//查询bd_order表得到如下数据 BdOrder bdOrder = 查询的数据 JSONArray jsonArray = JSONUtil.parseArray(bdOrder.getSkuInfo); List<SkuInfo> skuInfoList = jsonArray.toList(SkuInfo.class); //这样就得到了skuInfoList ,也是订单对应的多个商品数据
上述使用的json工具类是hutool工具,如果想使用可以在pom引入依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.3</version>
</dependency>以上就是mysql的json类型存储数据的插入和查询。
到此这篇关于java灵活使用mysql中json类型字段存储数据的文章就介绍到这了,更多相关java mysql中json字段存储数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用springboot logback动态获取application的配置项
这篇文章主要介绍了使用springboot logback动态获取application的配置项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
SpringCloud集成Micrometer Tracing的代码工程
Micrometer Tracing 是一个用于微服务架构的追踪库,它提供了一种简单而强大的方式来收集和报告分布式系统中的性能和调用链信息,Micrometer Tracing 旨在帮助开发者和运维人员理解微服务之间的交互,本文给大家介绍了如何在 Spring Cloud 集成 Micrometer Tracing2024-12-12
Java异常中toString()和getMessage()区别
在java异常体系中,要打印异常信息,可以通过:e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印,本文主要介绍了Java异常中toString()和getMessage()区别,具有一定的参考价值,感兴趣的可以了解一下2024-01-01
Spring Boot小型项目如何使用异步任务管理器实现不同业务间的解耦
这篇文章主要介绍了Spring Boot小型项目如何使用异步任务管理器实现不同业务间的解耦,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-08-08
Java Mybatis框架增删查改与核心配置详解流程与用法
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录2021-10-10


最新评论