java靈活使用mysql中json類型字段存儲(chǔ)數(shù)據(jù)詳解
日常數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)時(shí)經(jīng)常會(huì)碰見一對(duì)多的數(shù)據(jù)結(jié)構(gòu)類型,例如一筆訂單中包含多個(gè)商品數(shù)據(jù),一般情況下,可能會(huì)設(shè)計(jì)一個(gè)order表,一個(gè)sku表,但如果就想用一個(gè)表去存儲(chǔ)這些訂單和商品數(shù)據(jù),那么應(yīng)該如何去設(shè)計(jì)order表呢?這種情況下就可以使用萬(wàn)能json類型字段進(jìn)行存儲(chǔ)訂單與商品一對(duì)多的數(shù)據(jù)結(jié)構(gòu)了.
建表語(yǔ)句:
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='訂單表';
數(shù)據(jù)如下:

存入數(shù)據(jù):
商品實(shí)體類:
@Data
public class SkuInfo {
private String name;
private String price;
private String skuId;
}訂單實(shí)體類:
@Data
public class BdOrder {
private Long id;
private String orderId;
private String nick;
@TableField(value = "skuInfo",typeHandler = FastjsonTypeHandler.class)
private Object skuInfo;
}存入數(shù)據(jù)庫(kù): 直接構(gòu)造數(shù)據(jù)結(jié)構(gòu),插入數(shù)據(jù)庫(kù)即可
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);
//執(zhí)行插入sql從數(shù)據(jù)庫(kù)查詢數(shù)據(jù): 需要通過json去解析轉(zhuǎn)為list
//查詢bd_order表得到如下數(shù)據(jù) BdOrder bdOrder = 查詢的數(shù)據(jù) JSONArray jsonArray = JSONUtil.parseArray(bdOrder.getSkuInfo); List<SkuInfo> skuInfoList = jsonArray.toList(SkuInfo.class); //這樣就得到了skuInfoList ,也是訂單對(duì)應(yīng)的多個(gè)商品數(shù)據(jù)
上述使用的json工具類是hutool工具,如果想使用可以在pom引入依賴:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.3</version>
</dependency>以上就是mysql的json類型存儲(chǔ)數(shù)據(jù)的插入和查詢。
到此這篇關(guān)于java靈活使用mysql中json類型字段存儲(chǔ)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)java mysql中json字段存儲(chǔ)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)ssh連接服務(wù)器的方法步驟
本文主要介紹了java實(shí)現(xiàn)ssh連接服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
使用springboot logback動(dòng)態(tài)獲取application的配置項(xiàng)
這篇文章主要介紹了使用springboot logback動(dòng)態(tài)獲取application的配置項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringCloud集成Micrometer Tracing的代碼工程
Micrometer Tracing 是一個(gè)用于微服務(wù)架構(gòu)的追蹤庫(kù),它提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)收集和報(bào)告分布式系統(tǒng)中的性能和調(diào)用鏈信息,Micrometer Tracing 旨在幫助開發(fā)者和運(yùn)維人員理解微服務(wù)之間的交互,本文給大家介紹了如何在 Spring Cloud 集成 Micrometer Tracing2024-12-12
Java異常中toString()和getMessage()區(qū)別
在java異常體系中,要打印異常信息,可以通過:e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印,本文主要介紹了Java異常中toString()和getMessage()區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦
這篇文章主要介紹了Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
Java Mybatis框架增刪查改與核心配置詳解流程與用法
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡(jiǎn)單的 XML 或注解來(lái)配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫(kù)中的記錄2021-10-10
Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09

