java | MyBatis-plus映射和golang映射對比

文章目錄

  • Java
    • 實體類和數據庫的映射
      • 1.默認駝峰命名規則
      • 2.自定義字段映射
      • 3.關閉駝峰命名規則
      • 4.JSON序列化映射
  • Golang
    • 1. 結構體與表的映射
    • 2. 字段與列的映射
    • 3. 關聯關系映射
    • 4. 其他映射相關標簽

這篇也是做數據庫映射方面的對比:

Java

實體類和數據庫的映射

1.默認駝峰命名規則

MyBatis-Plus默認會將數據庫表字段名(下劃線命名)映射到實體類屬性名(駝峰命名)。例如:

數據庫表字段名:user_name
實體類屬性名:userName

2.自定義字段映射

可以通過@TableField注解或XML映射文件手動指定字段名與屬性名的映射關系。

3.關閉駝峰命名規則

通過配置map-underscore-to-camel-case為false關閉默認的駝峰命名映射。
在application.yml中配置:

mybatis-plus:configuration:map-underscore-to-camel-case: false

在application.properties中配置:

mybatis-plus.configuration.map-underscore-to-camel-case=false

4.JSON序列化映射

結合@JsonProperty或@JSONField注解,可以將實體類屬性名映射到JSON字段名。
通過以上方法,可以在MyBatis-Plus中靈活地定義實體類與數據庫以及JSON的映射關系。

Golang

GORM 的映射包括結構體與表的映射、字段與列的映射、關聯關系映射等。

1. 結構體與表的映射

GORM 默認會將結構體名稱的復數形式作為表名,例如 User 結構體對應的表名默認為 users。也可以通過 gorm:“table:your_table_name” 標簽來指定表名。
db.AutoMigrate(&User{}) 會根據 User 結構體的定義自動創建或更新對應的數據庫表。

package mainimport ("gorm.io/driver/sqlite""gorm.io/gorm"
)// User 結構體
type User struct {gorm.ModelName  stringEmail string
}func main() {db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})if err != nil {panic("failed to connect database")}// 自動遷移表結構db.AutoMigrate(&User{})
}

2. 字段與列的映射

GORM 默認會將結構體字段名轉換為蛇形命名(snake_case)作為列名,例如 UserName 字段對應的列名默認為 user_name。也可以通過 gorm:“column:your_column_name” 標簽來指定列名。
在這里插入圖片描述

3. 關聯關系映射

一對多主要通過外鍵來實現,多對多通過標簽實現,比如下面就是多對多的示例。

type User struct {gorm.ModelName  stringRoles []Role `gorm:"many2many:user_roles;"`
}type Role struct {gorm.ModelName stringUsers []User `gorm:"many2many:user_roles;"`
}

4. 其他映射相關標簽

gorm:“primaryKey”:指定字段為主鍵。
gorm:“unique”:指定字段為唯一約束。
gorm:“not null”:指定字段為非空約束。

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

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

相關文章

訊方·智匯云校華為官方授權培訓機構

1.官方授權 訊方智匯云校是華為領先級授權培訓機構(華為授權培訓合作伙伴(HALP)體系,分為認證、優選、領先三個等級,領先級是HALP最高級),代表著華為對培訓合作伙伴在專業能力、師資隊伍、合作…

避免踩雷!CUDA與Anaconda兼容性配置完全手冊

CUDA與Anaconda深度學習環境配置指南 目錄 核心概念解析安裝場景分析版本沖突處理最佳實踐指南常見問題解答 核心概念解析 1. 組件對比表 組件作用域包含內容查看方式NVIDIA驅動系統級GPU底層通信支持nvidia-smiCUDA Toolkit系統級完整開發工具鏈(nvcc等)nvcc --versioncon…

掌握.NET Core后端發布流程,如何部署后端應用?

無論你是剛接觸.NET Core的新手還是已有經驗的開發者,在這篇文章中你將會學習到一系列實用的發布技巧與最佳實踐,幫助你高效順利地將.NET Core后端應用部署到生產環境中 目錄 程序發布操作 Docker容器注冊表 文件夾發布 導入配置文件 網站運行操作 …

一周學會Flask3 Python Web開發-request請求對象與url傳參

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程: 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili request請求對象封裝了從客戶端發來的請求報文信息,我們可以從中獲取所有數據。 request對象包含的常用屬性&…

2025年2月深度實測!DeepSeek、OpenAI o1、Gemini打造爆款應用及對比

我在網上看到了關于DeepSeek R1的各種說法,這是一個開源模型,其能力即便不比OpenAI o1等付費模型強,也與之相當: 由于我在日常工作中廣泛使用這些人工智能模型(使用Cursor AI),我決定看看哪種模型最適合我。 在進行了200次Cursor請求后,我將分享我的實驗結果。 一、…

OpenCV機器學習(6)樸素貝葉斯分類器(Naive Bayes Classifier)cv::ml::NormalBayesClassifier的使用

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::ml::NormalBayesClassifier 是 OpenCV 機器學習模塊中的一部分,用于實現樸素貝葉斯分類器(Naive Bayes Classifier&a…

LLaVA-CoT: Let Vision Language Models Reason Step-by-Step論文解讀

文章目錄 前言一、摘要一、引言二、文獻綜述1. Visual reasoning with large language models2. Chain-of-thought in large language models3. Inference time scaling 三、方法1. Enhancing Reasoning Capability through Structured Thinking1. Reasoning Stages2. Data Pre…

Linux 和 Windows 區別

1. 文件組織 (1)目錄結構 Linux:采用**單一根目錄(/)**結構,所有文件和設備都掛載在這個目錄下。 典型目錄: /home/(用戶目錄)/etc/(配置文件)/bin/(系統可執行文件)/dev/(設備文件)/mnt/(掛載點)Windows:采用多個驅動器(C:\, D:\),每個分區是一個獨立的…

java基礎語知識(8)

類之間的關系 在類之間,最常見的關系有: 依賴(“uses-a”);聚合(“has-a”);繼承(“is-a”)。 依賴:一種使用關系,即一個類的實現需要另一個類的協助&#x…

Linux系統中常見的詞GNU是什么意思?

GNU 是 “GNU’s Not Unix” 的遞歸縮寫,它是一個自由軟件項目,旨在創建一個完全自由的操作系統。這個名字反映了GNU項目的核心理念:它試圖創建一個類Unix的系統,但不是Unix本身。 GNU 項目由 理查德斯托曼(Richard S…

安卓burp抓包,bypass ssl pinning

好久好久沒有發東西了。主要是懶。。。 這幾天在搞apk滲透,遇到了burp無法抓包問題,覺得可以寫下來。 問題描述 1. 一臺安卓手機,裝了面具,可以拿到root 2. 電腦上有burp,設置代理 3.手機和電腦連同一個網段&…

抖音試水AI分身;騰訊 AI 戰略調整架構;百度旗下小度官宣接入DeepSeek...|網易數智日報

抖音試水AI分身,字節旗下AI智能體平臺扣子已與抖音打通,相關功能內測中 2月19日消息,鈦媒體App獨家獲悉,字節旗下AI智能體開發平臺扣子(Coze)已與抖音打通,抖音創作者可在扣子智能體平臺打造AI分…

Python爬蟲實戰:爬取豆瓣電影

目錄 引言 1. 爬蟲基礎 1.1 什么是爬蟲? 1.2 Python爬蟲常用庫 2. 實戰:抓取豆瓣電影Top250 2.1 安裝依賴庫 2.2 發送HTTP請求 ?編輯 2.3 解析HTML ?編輯 2.4 存儲數據 2.5 完整代碼 3. 進階:處理分頁和動態內容 3.1 抓取多頁…

請談談 Vue 中的響應式原理,如何實現?

一、Vue2響應式原理:Object.defineProperty的利與弊 實現原理: // 數據劫持核心實現 function defineReactive(obj, key, val) {const dep new Dep(); // 依賴收集容器Object.defineProperty(obj, key, {get() {if (Dep.target) { // 當前Watcher實例…

第6章:基于LangChain如何開發Agents,附帶客戶支持智能體示例

本文主要介紹了 LangChain4j 中的 Agent(代理) 概念,以及如何使用 LangChain4j 構建代理系統,重點提供了一個客戶支持系統的智能體樣例 代理(Agents)| LangChain4j 注意: 請注意,“A…

Android 中使用 FFmpeg 進行音視頻處理

1. FFmpeg 基礎知識 1.1 什么是 FFmpeg? FFmpeg 是一個開源的多媒體處理工具,支持音視頻的編碼、解碼、轉碼、裁剪、合并、濾鏡、流媒體等功能。它是一個命令行工具,支持多種音視頻格式和編解碼器。1.2 為什么在 Android 中使用 FFmpeg? Android 自帶的多媒體 API(如 Med…

Matplotlib 高級圖表繪制與交互式可視化(ipywidgets)

目錄: ipywidgets 介紹 1. 什么是 ipywidgets 直接開始: 動態調整正弦波頻率 隨機散點圖 啟用交互式模式 使用滑塊和下拉菜單調整圖表樣式 使用布局管理器創建復雜界面 使用動畫創建動態圖表 最后: 綜合示例:動態儀表盤 ipywidgets 介紹 1. 什么是 ipywidgets i…

【FAQ】HarmonyOS SDK 閉源開放能力 —Live View Kit (1)

1.問題描述: 客戶端創建實況窗后,通過Push kit更新實況窗內容,這個過程是自動更新的還是客戶端解析push消息數據后填充數據更新?客戶端除了接入Push kit和創建實況窗還需要做什么工作? 解決方案: 通過Pu…

uvm中的激勵是如何發送出去的

在UVM中,Sequence生成的激勵(Transaction)通過以下協作流程發送到Driver并最終驅動到DUT,其核心機制如下: --------------- --------------- ------------ ----- | Sequence | → | Seque…

SpringAI系列 - ToolCalling篇(二) - 如何設置應用側工具參數ToolContext(有坑)

目錄 一、引言二、集成ToolContext示例步驟1: 在`@Tool`標注的工具方法中集成`ToolConext`參數步驟2:`ChatClient`運行時動態設置`ToolContext`參數三、填坑一、引言 在使用AI大模型的工具調用機制時,工具參數都是由大模型解析用戶輸入上下文獲取的,由大模型提供參數給本地…