java靈活使用mysql中json類(lèi)型字段存儲(chǔ)數(shù)據(jù)詳解
日常數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)時(shí)經(jīng)常會(huì)碰見(jiàn)一對(duì)多的數(shù)據(jù)結(jié)構(gòu)類(lèi)型,例如一筆訂單中包含多個(gè)商品數(shù)據(jù),一般情況下,可能會(huì)設(shè)計(jì)一個(gè)order表,一個(gè)sku表,但如果就想用一個(gè)表去存儲(chǔ)這些訂單和商品數(shù)據(jù),那么應(yīng)該如何去設(shè)計(jì)order表呢?這種情況下就可以使用萬(wàn)能json類(lèi)型字段進(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 '用戶(hù)昵稱(chēng)', `skuInfo` json DEFAULT NULL COMMENT '商品信息', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='訂單表';
數(shù)據(jù)如下:
存入數(shù)據(jù):
商品實(shí)體類(lèi):
@Data public class SkuInfo { private String name; private String price; private String skuId; }
訂單實(shí)體類(lèi):
@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ù)查詢(xún)數(shù)據(jù): 需要通過(guò)json去解析轉(zhuǎn)為list
//查詢(xún)bd_order表得到如下數(shù)據(jù) BdOrder bdOrder = 查詢(xún)的數(shù)據(jù) JSONArray jsonArray = JSONUtil.parseArray(bdOrder.getSkuInfo); List<SkuInfo> skuInfoList = jsonArray.toList(SkuInfo.class); //這樣就得到了skuInfoList ,也是訂單對(duì)應(yīng)的多個(gè)商品數(shù)據(jù)
上述使用的json工具類(lèi)是hutool工具,如果想使用可以在pom引入依賴(lài):
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.3</version> </dependency>
以上就是mysql的json類(lèi)型存儲(chǔ)數(shù)據(jù)的插入和查詢(xún)。
到此這篇關(guān)于java靈活使用mysql中json類(lèi)型字段存儲(chǔ)數(shù)據(jù)的文章就介紹到這了,更多相關(guān)java mysql中json字段存儲(chǔ)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mysql字符集引起的java.sql.SQLException:Incorrect?string?value:問(wèn)題
- Java使用Canal同步MySQL數(shù)據(jù)到Redis
- Java實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)的自動(dòng)備份和自動(dòng)還原
- Java連接MySQL數(shù)據(jù)庫(kù)并實(shí)現(xiàn)數(shù)據(jù)交互功能
- mysql-connector-java和mysql-connector-j的區(qū)別小結(jié)
- Idea如何導(dǎo)入java mysql驅(qū)動(dòng)包
相關(guān)文章
使用idea開(kāi)發(fā)Servlet詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于使用idea開(kāi)發(fā)Servlet的相關(guān)資料,將idea添加servlet的過(guò)程其實(shí)非常簡(jiǎn)單,只需要按照以下幾個(gè)步驟即可完成,需要的朋友可以參考下2023-10-10java實(shí)現(xiàn)ssh連接服務(wù)器的方法步驟
本文主要介紹了java實(shí)現(xiàn)ssh連接服務(wù)器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(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-08SpringCloud集成Micrometer Tracing的代碼工程
Micrometer Tracing 是一個(gè)用于微服務(wù)架構(gòu)的追蹤庫(kù),它提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)收集和報(bào)告分布式系統(tǒng)中的性能和調(diào)用鏈信息,Micrometer Tracing 旨在幫助開(kāi)發(fā)者和運(yùn)維人員理解微服務(wù)之間的交互,本文給大家介紹了如何在 Spring Cloud 集成 Micrometer Tracing2024-12-12Java異常中toString()和getMessage()區(qū)別
在java異常體系中,要打印異常信息,可以通過(guò):e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印,本文主要介紹了Java異常中toString()和getMessage()區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦
這篇文章主要介紹了Spring?Boot小型項(xiàng)目如何使用異步任務(wù)管理器實(shí)現(xiàn)不同業(yè)務(wù)間的解耦,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08Java Mybatis框架增刪查改與核心配置詳解流程與用法
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過(guò)簡(jiǎn)單的 XML 或注解來(lái)配置和映射原始類(lèi)型、接口和 Java POJO為數(shù)據(jù)庫(kù)中的記錄2021-10-10Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09