補充:建立實體類與數據表的映射關系

目錄

前言

?1 成員變量數據類型和字段類型 保持對應

2 成員變量的變量名,應采用小駝峰命名法

3 數據表中的主鍵如id 應采用自增方式

4 數據表中的時間類型數據與實體類中的時間類型的變量無法實現自動映射可以使用@JsonFormat 注解

4.1 配置全局時間處理器,替換@JsonFormat 注解

4.2?在Spring Boot中,可以通過配置文件設置默認格式?


前言

暫且補充這么多,之后在學習或工作中遇到了,繼續完善!


?1 成員變量數據類型和字段類型 保持對應

如下圖所示:

數據庫的字段類型實體類的屬性數據類型
char/varchar/text[文本型]String
int [數值型]Integer
bigintLong
doubleDouble
decimalBigDecimal

舉例:

實體包 entity: student? ,user 類

注意:數據庫中 data/time/datetime 字段類型 ,對應在Java中有兩種形式:

  • ?Java.util.Date
  • java.sql.Date

但我們推薦使用Java.util.Date

原因

這里 存在向上轉型:Java.util.Date 是java.sql.Date 的父類


2 成員變量的變量名,應采用小駝峰命名法

如 數據表? 字段 user_name 對應在實體類中 userName


示例

數據表

對應的實體類


3 數據表中的主鍵如id 應采用自增方式

如:

1,數據表中的主鍵(id)沒有采用自增,當我們使用id查詢,修改,刪除,操作是無法進行的!

2 ,數據表主鍵開始創建表時沒有添加,后添加,當查詢該表全部數據時,主鍵id顯示為null,當需要id時,要人為修改


示例

service層的借閱方法代碼

public Result borrowBook(Borrow  borrow) {/*判斷是否借過1 觀察圖書庫存,如果還存在,則借書,如果小于1,則借書失敗*/Book book = bookService.selectBookById(borrow.getBookId());Integer Stock = book.getStock();if (Stock > 0) {borrow.setStatus(1);borrow.setBorrowDate(DateUtil.getCurrentDateTime());if (borrowMapper.insert(borrow) > 0) {System.out.println("當前圖書:"+book);// 更新圖書庫存book.setStock(Stock - 1);book.setBookId(borrow.getBookId());bookService.brUpdateBook(book);return Result.success("借書成功");}return Result.error("500", "借書失敗");}return Result.error("500", "庫存不足");}

測試結果,觀察打印的當前圖書

發現查詢不到主鍵id,? ?解決辦法是 顯示設置id


數據表


4 數據表中的時間類型數據與實體類中的時間類型的變量無法實現自動映射可以使用@JsonFormat 注解

使用@JsonFormat 注解 需要添加json依賴

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency>

@JsonFormat 的作用
序列化(Java → JSON):將 Date/LocalDateTime 等時間類型按照指定格式轉換成 JSON 字符串。
反序列化(JSON → Java):將 JSON 字符串按照指定格式解析成 Java 時間類型。

注意:數據表數據與實體類數據的映射也是通過json格式數據傳遞,符合序列化與反序列化


示例

場景1:數據庫時間字段 ? 實體類 ? JSON

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;public class User {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date createTime; // 對應數據庫的 datetime/timestamp 字段// getter & setter
}

數據庫存儲:2023-10-01 12:00:00(MySQL DATETIME)
Java 對象:java.util.Date 類型

瀏覽器輸出結果

//JSON 輸出:
{"createTime": "2023-10-01 12:00:00"
}

場景2:配合 LocalDateTime(Java 8+)

import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;public class Order {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime orderTime; // 對應數據庫的 datetime/timestamp 字段// getter & setter
}

數據庫存儲:2023-10-01 12:00:00(MySQL DATETIME)
Java 對象:LocalDateTime 類型


瀏覽器輸出結果

//JSON 輸出:
{"orderTime": "2023-10-01 12:00:00"
}

4.1 配置全局時間處理器,替換@JsonFormat 注解
  • 如果不想在每個字段上使用注解,可以在配置類中設置全局格式
@Configuration
public class JacksonConfig {@Beanpublic ObjectMapper objectMapper() {ObjectMapper mapper = new ObjectMapper();mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));mapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));return mapper;}
}
4.2?在Spring Boot中,可以通過配置文件設置默認格式?
# application.properties
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

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

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

相關文章

HTML/CSS 魔法第二彈:會逃跑的調皮按鈕(懸停自動閃避)

引言 在網頁設計中&#xff0c;交互性是吸引用戶的關鍵因素之一。普通的按鈕在用戶懸停時可能只是顏色或樣式發生改變&#xff0c;但今天我們要創造一個 “調皮” 的按鈕&#xff0c;當用戶鼠標懸停在上面時&#xff0c;它會自動閃避&#xff0c;仿佛在和用戶玩游戲。本文將詳…

**Java面試:技術大比拼**

互聯網大廠Java面試&#xff1a;一場嚴肅與搞笑交織的技術拷問 場景&#xff1a;互聯網大廠面試間 面試官&#xff08;嚴肅&#xff09;&#xff1a;請坐。馬小帥&#xff0c;我們今天主要考察一下你在Java技術棧上的掌握程度&#xff0c;以及如何將這些技術應用于實際業務場景…

25考頻高的前端面試題

請求失敗會彈出一個toast&#xff0c;如何保證批量請求失敗&#xff0c;只彈出一個toast 設置全局標志位&#xff0c;定義一個全局變量&#xff08;如isToastShown)來表示是否已經彈出過toast。在請求失敗的處理邏輯中&#xff0c;首先檢查該標志位。如果尚未彈出toast&#xf…

命令模式(Command Pattern)詳解

文章目錄 1. 什么是命令模式?2. 為什么需要命令模式?3. 命令模式的核心概念4. 命令模式的結構5. 命令模式的基本實現5.1 簡單的燈光控制示例5.2 家電控制示例6. 帶有撤銷功能的命令模式6.1 修改命令接口6.2 實現可撤銷的燈光命令6.3 實現可撤銷的風扇命令6.4 修改調用者,支持…

《Vue3學習手記8》

vue3中的一些API shallowRef ( ) 和shallowReactive ( ) shallowRef (淺層響應式) 1.作用:創建一個響應式數據&#xff0c;但只對頂層屬性進行響應式處理。 2.用法: const originalref(...) const original2shallowRef(original) 3.特點:只跟蹤引用值的變化&#xff0c;不關心…

雙列集合——map集合和三種遍歷方式

雙列集合的特點 鍵和值一一對應&#xff0c;每個鍵只能對應自己的值 一個鍵和值整體稱為鍵值對或鍵值對對象&#xff0c;java中叫做entry對象。 map常見的api map接口中定義了雙列集合所有的共性方法&#xff0c;下面三個實現類就沒有什么額外新的方法要學習了。 map接口…

Linux安裝部署Postgresql數據庫

聯網安裝方案 Linux能在線安裝依賴組件的前提下&#xff0c;可以快速安裝部署PG數據庫&#xff0c;安裝過程使用root管理員帳號&#xff1a; 首先&#xff0c;使用如下命令自動下載Postgresql組件&#xff1a; # 在openEuler、Fedora或CentOS 8上&#xff0c;你可能會使用&a…

供應鏈算法整理(二)--- 智能補貨

供應鏈業務的目標價值是&#xff1a;優化貨品的供給、銷售提供支撐&#xff0c;以降低成本&#xff0c;提高時效、收益&#xff0c;最終提升用戶體驗。基于目標價值&#xff0c;整體的算法模塊分為&#xff1a;智能選品、智能預測、品倉鋪貨、智能補貨、智能調撥、倉網路由、快…

vscode 個性化

vscode 個性化 設置 吸頂效果 使用前使用后 設置方法 VS Code 的粘性滾動預覽 - 類似于 Excel 的凍結首行 插件 代碼片段分享 - CodeSnap 使用方式 CtrlShiftP輸入CodeSnap 喚起插件選擇代碼 行內報錯提示 - Error Lens 使用前使用后 VSCode Error Lens插件介紹&…

Rockermq的部署與使用(0-1)

?RocketMQ? 是阿里巴巴開源的一款 ?分布式消息中間件&#xff0c;具有高吞吐、低延遲、高可用等特點&#xff0c;廣泛應用于多個領域&#xff0c;包括異步通信解耦、企業解決方案、金融支付、電信、電子商務、快遞物流、廣告營銷、社交、即時通信、移動應用、手游、視頻、物…

軟件測試報告機構如何保障軟件質量并維護其安全性?

軟件測試報告機構在軟件開發流程里起著十分關鍵的作用&#xff0c;它可以保障軟件的質量&#xff0c;它還能夠維護軟件的安全性。下面&#xff0c;我們就來深入了解一下這類機構。 機構作用 軟件測試報告機構是軟件質量的“把關者”&#xff0c;能對軟件進行全面評估&#xf…

4個純CSS自定義的簡單而優雅的滾動條樣式

今天發現 uni-app 項目的滾動條不顯示&#xff0c;查了下原來是設置了 ::-webkit-scrollbar {display: none; } 那么怎么用 css 設置滾動條樣式呢&#xff1f; 定義滾動條整體樣式? ::-webkit-scrollbar 定義滾動條滑塊樣式 ::-webkit-scrollbar-thumb 定義滾動條軌道樣式?…

ES6入門---第二單元 模塊五:模塊化

js不支持模塊化 注意&#xff1a; 需要放到服務器環境 1、如何定義模塊&#xff1f; export 東西 例&#xff1a;1.js文件中 console.log(1模塊加載了);//顯示是否加載了 export const a 12; export const b 5; export let c 101; const a12; const b5; const c101;ex…

14.Excel:排序和篩選

一 位置 兩個位置。 二 排序&#xff1a;如何使用 1.常規使用 補充&#xff1a;不彈出排序提醒排序。 選中要排序列中的任意一個單元格&#xff0c;然后排序。 2.根據要求進行排序 1.根據姓名筆畫進行降序排序 要勾選上數據包含標題&#xff0c;默認是勾選了。 2.根據運營部、…

嵌入式系統基礎知識

目錄 一、馮諾依曼結構與哈佛結構 &#xff08;一&#xff09;馮諾依曼結構 &#xff08;二&#xff09;哈佛架構 二、ARM存儲模式 &#xff08;一&#xff09;大端模式 &#xff08;二&#xff09;小端模式 &#xff08;三&#xff09;混合模式 三、CISC 與 RISC &am…

CSS 預處理器 Sass

目錄 Sass 一、Sass 是什么&#xff1f; 二、核心功能詳解 1. 變量&#xff08;Variables&#xff09; 2. 嵌套&#xff08;Nesting&#xff09; 3. 混合宏&#xff08;Mixins&#xff09; 4. 繼承&#xff08;Inheritance&#xff09; 5. 運算&#xff08;Operations&…

信息收集新利器:SSearch Chrome 插件來了

SSearch 下載地址 SSearch &#x1f623;用途 每次谷歌語法搜索時還得自己寫&#xff0c;我想省事一點&#xff0c;弄了一個插件&#xff0c;先加了幾個常用的語法&#xff0c;點擊后會跳轉到對應搜索頁面&#xff0c;也可以直接在搜索框微調 后續也會加些其他語法 &#…

Docker搭建SFTP

在這個教程中&#xff0c;我們將通過一個簡單的例子來展示如何使用 Docker 和 atmoz/sftp 鏡像設置一個基本的 SFTP 服務。這個服務將允許用戶通過 SFTP 安全地訪問和管理文件。我們將配置一個名為 ops 的用戶&#xff0c;其密碼為 123456&#xff0c;并限定用戶只能訪問特定的…

正態分布習題集 · 答案與解析篇

正態分布習題集 答案與解析篇 與題目篇編號一致,如有其他解題思路,歡迎在評論區交流。 1. 基礎定義與性質 1.1 密度函數 X ~ N ( μ , σ 2 ) X \sim N(\mu,\sigma^2) X~N(μ,σ2) 的 PDF: [ f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\left(-\frac{(x-\mu)2}{2\sigma2}\…

Java學習手冊:SQL 優化技巧

一、SQL 查詢優化 選擇合適的索引列 &#xff1a;索引可以顯著提高查詢速度&#xff0c;但需要選擇合適的列來創建索引。通常&#xff0c;對于頻繁作為查詢條件的列、連接操作的列以及排序或分組操作的列&#xff0c;應該考慮創建索引。例如&#xff0c;在一個訂單表中&#xf…