java靈活使用mysql中json類型字段存儲數(shù)據(jù)詳解
日常數(shù)據(jù)庫存儲數(shù)據(jù)時經(jīng)常會碰見一對多的數(shù)據(jù)結(jié)構(gòu)類型,例如一筆訂單中包含多個商品數(shù)據(jù),一般情況下,可能會設(shè)計一個order表,一個sku表,但如果就想用一個表去存儲這些訂單和商品數(shù)據(jù),那么應(yīng)該如何去設(shè)計order表呢?這種情況下就可以使用萬能json類型字段進行存儲訂單與商品一對多的數(shù)據(jù)結(jié)構(gòu)了.
建表語句:
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ù):
商品實體類:
@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; }
存入數(shù)據(jù)庫: 直接構(gòu)造數(shù)據(jù)結(jié)構(gòu),插入數(shù)據(jù)庫即可
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ù)庫查詢數(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 ,也是訂單對應(yīng)的多個商品數(shù)據(jù)
上述使用的json工具類是hutool工具,如果想使用可以在pom引入依賴:
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.3</version> </dependency>
以上就是mysql的json類型存儲數(shù)據(jù)的插入和查詢。
到此這篇關(guān)于java靈活使用mysql中json類型字段存儲數(shù)據(jù)的文章就介紹到這了,更多相關(guān)java mysql中json字段存儲數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用springboot logback動態(tài)獲取application的配置項
這篇文章主要介紹了使用springboot logback動態(tài)獲取application的配置項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08SpringCloud集成Micrometer Tracing的代碼工程
Micrometer Tracing 是一個用于微服務(wù)架構(gòu)的追蹤庫,它提供了一種簡單而強大的方式來收集和報告分布式系統(tǒng)中的性能和調(diào)用鏈信息,Micrometer Tracing 旨在幫助開發(fā)者和運維人員理解微服務(wù)之間的交互,本文給大家介紹了如何在 Spring Cloud 集成 Micrometer Tracing2024-12-12Java異常中toString()和getMessage()區(qū)別
在java異常體系中,要打印異常信息,可以通過:e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印,本文主要介紹了Java異常中toString()和getMessage()區(qū)別,具有一定的參考價值,感興趣的可以了解一下2024-01-01Spring?Boot小型項目如何使用異步任務(wù)管理器實現(xiàn)不同業(yè)務(wù)間的解耦
這篇文章主要介紹了Spring?Boot小型項目如何使用異步任務(wù)管理器實現(xiàn)不同業(yè)務(wù)間的解耦,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08Java Mybatis框架增刪查改與核心配置詳解流程與用法
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄2021-10-10Java?Web實現(xiàn)簡易圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java?Web實現(xiàn)簡易圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09