MybatisPlus-17.擴展功能-JSON處理器

一.JSON處理器

數據庫中有的字段會以JSON格式來進行存儲。類型為json類型。但是在java中我們沒有這樣的數據類型,一般會以字符串接收,這樣就會導致如果想要從數據庫中獲取json格式中的key和value的話會比較麻煩,還要進行字符串操作。那么有沒有簡單的方法呢?當然有,MybatisPlus提供了很多特殊類型字段的類型處理器,解決特殊字段類型與數據庫類型轉換的問題。例如處理JSON就可以使用JacksonTypeHandler處理器。

二.定義實體

首先,我們定義一個單獨實體類來與info字段的屬性匹配:

代碼如下:

package com.itheima.mp.domain.po;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
public class UserInfo {private Integer age;private String intro;private String gender;
}

我們在有參構造中提供of方法,方便一會兒使用of靜態方法創建實例化對象。?

三.使用類型處理器

接下來,將User類的info字段修改為UserInfo類型,并聲明類型處理器:

同時,在User類上添加一個注解,聲明自動映射:

package com.itheima.mp.domain.po;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.itheima.mp.enums.UserStatus;
import lombok.Data;import java.time.LocalDateTime;@Data
@TableName(value = "tb_user", autoResultMap = true)     // 開啟自動映射
public class User {/*** 用戶id*/@TableId(type = IdType.AUTO)private Long id;/*** 用戶名*/@TableField("`username`")private String username;/*** 密碼*/private String password;/*** 注冊手機號*/private String phone;/*** 詳細信息*/@TableField(typeHandler = JacksonTypeHandler.class)private UserInfo info;/*** 使用狀態(1正常 2凍結)*/private UserStatus status;/*** 賬戶余額*/private Integer balance;/*** 創建時間*/private LocalDateTime createTime;/*** 更新時間*/private LocalDateTime updateTime;
}

因為User對象中又包含了UserInfo對象,因此為了保證讀取和寫入數據庫的正確性,保證字段和屬性之間的映射關系,要將自動映射autoResultMap設為true。

測試可以發現,所有數據都正確封裝到UserInfo當中了:

同時,為了讓頁面返回的結果也以對象格式返回,我們要修改UserVO中的info字段:

package com.itheima.mp.domain.vo;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.itheima.mp.domain.po.UserInfo;
import com.itheima.mp.enums.UserStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.List;@Data
@ApiModel(description = "用戶VO實體")
public class UserVO {@ApiModelProperty("用戶id")private Long id;@ApiModelProperty("用戶名")private String username;@ApiModelProperty("詳細信息")@TableField(typeHandler = JacksonTypeHandler.class)private UserInfo info;@ApiModelProperty("使用狀態(1正常 2凍結)")private UserStatus status;@ApiModelProperty("賬戶余額")private Integer balance;@ApiModelProperty("用戶收貨地址")private List<AddressVO> addresses;
}

此時,在頁面查詢結果如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90462.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Web】DASCTF 2025上半年賽 wp

目錄 phpms 再短一點點 澤西島 phpms dirsearch請求太快會報429&#xff0c;要設置一手--delay&#xff0c;掃出來.git 跑一下githacker git stash list git stash show -p 注釋的繞過參考&#xff1a;從國賽想到的一些php繞過注釋符trick 發現很多函數都被disable了 這…

STM32-USART串口配置教程和printf函數實現(寄存器版)

本章概述思維導圖通信介紹通信介紹概況通信&#xff0c;至少是需要兩個對象&#xff0c;一個收一個發數據。根據數據通信的傳輸時序協調方式&#xff0c;可分為&#xff1a;同步通信和異步通信&#xff1b;根據數據通信的傳輸線路可分為&#xff1a;串行通信和并行通信&#xf…

4種靈活的方法從POCO手機中刪除聯系人

許多POCO用戶經常需要清理聯系人列表&#xff0c;刪除重復或過時的條目&#xff0c;或者在出售或贈送手機之前刪除個人或敏感聯系人。無論是為了隱私、組織管理&#xff0c;還是僅僅是為了管理存儲空間&#xff0c;高效地刪除POCO手機中的聯系人是至關重要的。本文將介紹4種智能…

航段導航計算機 (Segment_Navigator) 設計與實現

航段導航計算機 (Segment_Navigator) 設計與實現 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 航段導航計算機是現代航空電子系統中的關鍵組件&a…

input.1是onnx輸入的名稱,但是依然警告不是

導出動態軸的時候發現&#xff0c;明明input.1就是onnx的名字&#xff0c;但是依然有警告說不是&#xff1b;/miniconda3/envs/py38/lib/python3.8/site-packages/torch/onnx/utils.py:2078: UserWarning: Provided key input.1 for dynamic axes is not a valid input/output …

生成式人工智能展望報告-歐盟-02-技術方面

原文地址 摘要 本章的重點是GenAI的技術層面&#xff0c;首先是對其能力和局限性的評估。它強調了部署GenAI系統所帶來的網絡安全挑戰。會議討論了新出現的技術趨勢&#xff0c;為決策者和利益攸關方提供了前瞻性的視角。關鍵問題包括確保GenAI應用程序的安全性和可靠性所需的…

人工智能與云計算雙輪驅動:元宇宙如何重構全球產業生態

一、人工智能在元宇宙中的核心應用1. 內容生成與虛擬世界構建生成式AI&#xff08;AIGC&#xff09;&#xff1a;通過AI算法自動生成3D模型、虛擬場景和角色&#xff0c;顯著降低內容制作成本和時間。例如&#xff1a;聯想晨星元宇宙平臺&#xff1a;利用AIGC技術實現低成本、高…

企業信息管理系統開發實戰:基于 Spring Boot+MyBatis+Thymeleaf

引言&#xff1a;企業信息管理系統的核心價值在企業日常運營中&#xff0c;高效的信息管理是提升效率的關鍵。本文將手把手教你開發一套企業信息管理系統&#xff0c;涵蓋用戶登錄、信息增刪改查、權限控制等核心功能。系統采用 Spring Boot 作為后端框架&#xff0c;MyBatis 處…

NLP自然語言處理的一些疑點整理

PyTorch評估模式&#xff08;torch.no_grad和model.eval&#xff09;差異在PyTorch中&#xff0c;model.eval()和torch.no_grad()是模型評估和推理階段的兩個關鍵工具&#xff0c;它們各自扮演著不同的角色&#xff0c;但常常被一起使用以確保模型行為的正確性和計算效率。理解…

物流倉儲自動化升級:Modbus TCP與DeviceNet的協議融合實踐

一、項目背景在我們物流廠的日常運營中&#xff0c;分揀效率和倉儲精準度一直是瓶頸。傳統人工分揀不僅速度慢&#xff0c;還容易因疲勞出錯&#xff1b;倉儲區域的貨物定位全靠人工記錄&#xff0c;時常出現找貨難、盤點耗時的問題。生產線的核心控制依賴施耐德PLC&#xff0c…

產品動態 | 同創永益IStorM Chaos 混沌工程平臺V4.0震撼發布:智能驅動,筑牢系統穩定性防線

當混沌工程從試點走向企業級大規模推廣&#xff0c;標準化缺失、專家依賴高、實施效率低等痛點成為阻礙系統穩定性升級的 “攔路虎”。此刻&#xff0c;同創永益重磅推出IStorM Chaos 混沌工程平臺 V4.0&#xff0c;以智能技術為核心驅動力&#xff0c;為企業構建更高效、更靈活…

C++中的反向迭代器

C中的反向迭代器 為啥反向迭代器的講解要單獨拎出來講&#xff0c;沒有在講各個容器的時候順手講了呢&#xff1f; 主要是因為c中的反向迭代器和正向迭代器的實現不太一樣。 它思想不復雜&#xff0c;主要是巧。來&#xff0c;我們按照我們剛剛的想法把代碼寫出來 #pragma once…

【一步步ai】數據增強與預處理

提升NL2SQL系統性能是一個復雜的多維度優化問題&#xff0c;涉及數據工程、模型架構、訓練策略和評估方法等多個層面。以下是一些有效的提升方向和具體方法&#xff1a; 一、數據增強與預處理 多樣化數據生成 模板擴展&#xff1a;基于SQL語法模板自動生成多樣化的NL-SQL對&am…

站在哪個肩膀上開始學習卡爾曼濾波

站在哪個肩膀上開始學習卡爾曼濾波前言從自適應濾波的角度正交性原理到維納解kalman濾波的提出innovation process新息過程kalman濾波算法Kalman 自適應濾波器算法初始條件輸入觀測向量過程已知參數計算&#xff1a;n1&#xff0c;2&#xff0c;3&#xff0c;..參考前言 不知道…

什么是FCR,如何提升FCR?

? FCR&#xff08;First Call Resolution&#xff0c;首次呼叫解決率&#xff09;&#xff0c;意思是指客戶首次聯系客服時&#xff0c;問題在單次交互中被完全解決的比率。? ?FCR &#xff08;首次解決的通話量 / 總首次通話量&#xff09; 100%一、關鍵要點&…

【瀏覽器插件沖突】Edge瀏覽器加載不出來CSDN創作者中心

【瀏覽器插件沖突】Edge瀏覽器加載不出來CSDN創作者中心寫在最前面報錯GPT的全部回復&#xff0c;可以參考&#x1f50d; 具體錯誤解釋&#xff1a;1. **CORS錯誤**2. **XHR 請求失敗**3. **ReaderArticleFinder / Readability**&#x1f6e0;? 為什么頁面沒有內容顯示&#x…

從零開發Java坦克大戰:架構設計與難點突破 (下)

6. 游戲引擎類:6.1 完整源碼展示: import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; import java.util.HashSet; import java.util.Random; import java.util.Set;public class Gam…

Git下載與安裝全攻略

引言 Git是當今最流行的分布式版本控制系統&#xff0c;由Linus Torvalds于2005年創建。它幫助開發者高效管理代碼變更&#xff0c;支持多人協作開發&#xff0c;是現代軟件開發不可或缺的工具。無論是個人項目還是團隊協作&#xff0c;Git都能提供強大的版本控制功能。 本文…

【Elasticsearch】快照生命周期管理 SLM(理論篇)

《Elasticsearch 集群》系列&#xff0c;共包含以下文章&#xff1a; 1?? 冷熱集群架構2?? 合適的鍋炒合適的菜&#xff1a;性能與成本平衡原理公式解析3?? ILM&#xff08;Index Lifecycle Management&#xff09;策略詳解4?? Elasticsearch 跨機房部署5?? 快照與恢…

深入理解 UDP 協議:從原理到實戰的技術解析

UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;作為 TCP 的 "輕量型伙伴"&#xff0c;在實時通信、流媒體傳輸等場景中發揮著不可替代的作用。與 TCP 的可靠傳輸不同&#xff0c;UDP 以 "簡單、快速、無連接" 為設計理念&a…