0


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类型存储数据的插入和查询。

标签: mysql json 数据库

本文转载自: https://blog.csdn.net/CH3COCH2COOC2H5/article/details/139424544
版权归原作者 科大306晓岩 所有, 如有侵权,请联系我们删除。

“java中如何灵活使用mysql中的json类型字段存储数据”的评论:

还没有评论