@Column 注解屬性詳解

提示:文章旨在說明 @Column 注解屬性如何在日常開發中使用,數據庫類型為 MySql,其他類型數據庫可能存在偏差,需要注意。

文章目錄

  • 一、name 方法
  • 二、unique 方法
  • 三、nullable 方法
  • 四、insertable 方法
  • 五、updatable 方法
  • 六、columnDefinition 方法
  • 七、table 方法
  • 八、length 方法
  • 九、precision 方法
  • 十、scale 方法
  • 總結


提示:以下是本篇文章正文內容,下面案例可供參考

一、name 方法

String name() default "";

該方法用于將實體類的屬性與數據庫表中的列進行映射,比如:

@Column(name = "user_age")
private String age;  // 映射到數據庫的 user_age 列

如果不用該方法,則 java 實體類與數據庫表中的列保持一致,如java中是 age,則數據庫中也是 age,但是如果開啟了全局命名策略,如小駝峰轉換下劃線,則會默認將java中多個單詞的屬性,用下劃線隔開,并小寫。如userAge,則對應的列為user_age;判斷用下劃線是取決于大寫的字母。

開啟配置:

spring:jpa:hibernate:naming:physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

二、unique 方法

boolean unique() default false;

指示該列是否具有唯一約束,建議與數據庫中唯一索引共同開啟,默認 false。

@Column(unique = true)
private String email;  // 確保email列的值在表中是唯一的

唯一索引

三、nullable 方法

boolean nullable() default true;

指示該列是否允許為 null 值,默認 true。

@Column(nullable = false)
private String password;  // 密碼字段不允許為null

四、insertable 方法

boolean insertable() default true;

指示該列是否允許為 null 值,默認 true。

@Column(insertable = false)
private Date createTime;  // 創建時間由數據庫自動生成,不包含在INSERT中

五、updatable 方法

boolean updatable() default true;

指示該列是否包含在 UPDATE 語句中,默認 true。

@Column(updatable = false)
private Long id;  // ID一旦創建不可更新

六、columnDefinition 方法

String columnDefinition() default "";

指定生成 DDL 時使用的列定義。

@Column(columnDefinition = "TEXT")
private String content;  // 指定為TEXT類型而非默認的VARCHAR@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private Date lastModified;  // 指定為TIMESTAMP類型,使用當前時間函數@Column(columnDefinition = "varchar(64) comment '版本號'") 
private String edition;  // 指定為varchar類型,長度為64,中文注釋為版本號

如果配置 spring.jpa.hibernate.ddl-auto=update,則會讀取該方法生成對應的列,所以在開發階段,配合使用會大大節約開發時間,強烈建議使用。唯一注意的是在使用需要讓 java 中的類型與數據庫中類型兼容,不要出現 java 中是字符串,而數據庫中是時間類型。

七、table 方法

String table() default "";

當實體映射到多個表時,指定該列所屬的表。

@Column(name = "hobby", table = "user_details")
private String hobby;  // 該屬性映射到user_details表的列

該方法實際使用會比較復雜,會和 @SecondaryTable 注解配合使用,那么從例子可以看到,在主表對應的列是 hobby,在擴展表對應的列是 user_details,當然實際使用情況可能還會存在其他關聯情況,這里不做過多討論,大家只需知道該方法用于將屬性映射到擴展表中的列即可。

八、length 方法

int length() default 255;

指定字符串類型列的長度(僅對String類型有效),默認 255。

@Column(length = 100)
private String title;  // 標題最大長度為100字符

九、precision 方法

int precision() default 0;

指定十進制數值的精度(總位數),用于 BigDecimal,默認 0。

@Column(precision = 10, scale = 2)
private BigDecimal salary;  // 總共10位,小數點后2位

一般和 scale 配合使用,建議對精確到小數點后幾位的數字類型使用,場景建議為工業數字,錢幣數值等。

十、scale 方法

int scale() default 0;

指定十進制數值的小數位數,用于 BigDecimal,默認 0。

@Column(precision = 5, scale = 2)
private BigDecimal price;  // 如123.45

一般和 precision 配合使用。

總結

沒有總結,希望大家在實際開發中真正理解,并正確使用就好~~~

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

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

相關文章

使用Gemini, LangChain, Gradio打造一個書籍推薦系統 (第二部分)

建立向量嵌入數據庫 from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter from langchain.docstore.document import Document from langchain_chroma.vectorstores import Chromaimport vertexai from…

【Go-4】函數

函數 函數是編程中的基本構建塊,用于封裝可重用的代碼邏輯。Go語言中的函數功能強大,支持多種特性,如多返回值、可變參數、匿名函數、閉包以及將函數作為值和類型傳遞。理解和掌握函數的使用對于編寫高效、可維護的Go程序至關重要。本章將詳…

【已解決】HBuilder X編輯器在外接顯示器或者4K顯示器怎么界面變的好小問題

觸發方式:主要涉及DPI縮放問題,可能在電腦息屏有概率觸發 修復方式: 1.先關掉軟件直接更改屏幕縮放,然后打開軟件,再關掉軟件恢復原來的縮放,再打開軟件就好了 2.(不推薦)右鍵HBuilder在屬性里…

spark調度系統核心組件SparkContext、DAGSchedul、TaskScheduler、Taskset介紹

目錄 1. SparkContext2.DAGScheduler3. TaskScheduler4. 協作關系5 TaskSet的定義6. 組件關系說明Spark調度系統的核心組件主要有SparkContext、DAGScheduler和TaskScheduler SparkContext介紹 1. SparkContext 1、資源申請: SparkContext是Spark應用程序與集群管理器(如St…

VSCode+EIDE通過KeilC51編譯,使VSCode+EIDE“支持”C和ASM混編

在使用Keil C51時,要讓Keil C51支持混編則需要在混編的.c文件上右鍵選擇Options for File *(ALTF7),打開選項界面后,在 Properties 頁 勾上 Generate Assembler SRC File 和 Assemble SRC File ,如下圖所示: 這樣設置后…

SQLynx:一款跨平臺的企業級數據庫管理工具

SQLynx 是一款支持跨平臺(Windows、Linux、macOS、Web)的企業級數據庫管理和 SQL 工具,可以提供高效、安全且適配國產化技術棧的數據庫管理解決方案。 數據源 SQLynx 支持連接各種關系型數據庫、非關系型數據庫以及大數據平臺,包…

實戰項目8(實訓)

目錄 項目01 【sw1】配置 【sw2】配置 任務結果截圖 項目02 【sw1】配置 【sw2】配置 任務結果截圖 項目03 【sw1】配置 任務結果截圖 項目04 【sw1】配置 【r1】配置 任務結果截圖 項目05 【r1】配置 【r2】配置 【r3】配置 任務結果截圖 項目06 【r1】…

TCP為什么是三次握手,而不是二次?

為什么需要三次握手? 想象一下,你要給遠方的朋友寄一份重要文件。你會怎么做? 普通人的做法: 直接扔進郵箱,祈禱別丟了 聰明人的做法: 先打電話確認地址,再發快遞,最后確認收到 T…

dubbo使用nacos作為注冊中心配置

<dubbo:registry protocol"nacos" address"${dubbo.registry.address.nacos}" /> <dubbo:metadata-report address"${dubbo.metadata-report.address}"/> 如果有多個地址&#xff0c;這塊如何配置呢&#xff1f; nacos://ip:端口?…

教師角色的轉變:從知識傳授者到學習引導者

教師角色的轉變&#xff1a;從知識傳授者到學習引導者 隨著人工智能&#xff08;AI&#xff09;和信息技術的迅速發展&#xff0c;教育正在經歷深刻的變革。其中&#xff0c;教師角色的轉變尤為關鍵。傳統上&#xff0c;教師主要承擔“知識傳授者”的職責&#xff0c;即向學生…

PostgreSQL 用戶權限與安全管理

1 系統默認角色 postgres# select rolname from pg_roles; rolname ----------------------------- postgres pg_database_owner pg_read_all_data pg_write_all_data pg_monitor pg_read_all_settings pg_read_all_stats pg_stat_scan_tables …

C++構造函數和析構函數

C++構造函數和析構函數 C++的構造函數和析構函數是類的特殊成員函數,用于對象的創建和銷毀,分別在對象的生命周期開始和結束時自動調用。它們的使用對資源管理和對象的初始化/清理至關重要。 1. 構造函數 定義 構造函數在對象創建時自動調用,用于初始化對象的數據成員。構造…

根據Cortex-M3(STM32F1)權威指南講解MCU內存架構與如何查看編譯器生成的地址具體位置

首先我們先查看官方對于Cortex-M3預定義的存儲器映射 1.存儲器映射 1.1 Cortex-M3架構的存儲器結構 內部私有外設總線&#xff1a;即AHB總線&#xff0c;包括NVIC中斷&#xff0c;ITM硬件調試&#xff0c;FPB, DWT。 外部私有外設總線&#xff1a;即APB總線&#xff0c;用于…

軟件設計師“測試用例”考點分析——求三連

一、測試用例設計核心要點解析 1. 白盒測試覆蓋標準 &#xff08;1&#xff09;路徑覆蓋&#xff1a;需覆蓋程序中所有可能的路徑。如2018年真題路徑覆蓋需要3組測試用例&#xff08;①②、①③、①③④&#xff09;&#xff0c;2020年流程圖則需4個用例覆蓋ace/abd/abe/acd四…

Linux 用戶無法遠程連接服務器

前言 昨天深夜一點多接到客戶電話&#xff0c;客戶說OS用戶下午下班前還能正常登錄。因為晚上一點半需要關閉所有服務進行遷移&#xff0c;但是用戶無法登錄了&#xff0c;導致后續流程無法執行。我讓他先通過root用戶緊急修改了密碼&#xff0c;先保證業務正常流轉。 問題 …

多模態大語言模型arxiv論文略讀(八十八)

MammothModa: Multi-Modal Large Language Model ?? 論文標題&#xff1a;MammothModa: Multi-Modal Large Language Model ?? 論文作者&#xff1a;Qi She, Junwen Pan, Xin Wan, Rui Zhang, Dawei Lu, Kai Huang ?? 研究機構: ByteDance, Beijing, China ?? 問題背景…

svn遷移到git保留記錄和Python字符串格式化 f-string的進化歷程

svn遷移到git保留記錄 and Python字符串格式化(二&#xff09;&#xff1a; f-string的進化歷程 在將項目從SVN遷移到Git時&#xff0c;保留完整的版本歷史記錄非常重要。下面是詳細的步驟和工具&#xff0c;可以幫助你完成這一過程&#xff1a; 安裝Git和SVN工具 首先&#…

springboot配置mysql druid連接池,以及連接池參數解釋

文章目錄 前置配置方式參數解釋 前置 springboot 項目javamysqldruid 連接池 配置方式 在 springboot 的 application.yml 中配置基本方式 # Druid 配置&#xff08;Spring Boot YAML 格式&#xff09; spring:datasource:url: jdbc:mysql://localhost:3306/testdb?useSSL…

vue實現高亮文字效果——advanced-mark.js

組件介紹-advanced-mark.js&#xff1a; advanced-mark.js 是一個用于 Vue 的高亮文字組件&#xff0c;它可以幫助你在文本中高亮顯示指定的關鍵詞或短語。 組件地址&#xff1a;https://angezid.github.io/advanced-mark.js/doc-v2/getting-started.html 主要功能&#xff1…

DC30V/2.5A同步降壓芯片SL1581 輸入24V降壓5V 12V2A電流

在工業自動化、汽車電子等領域&#xff0c;24V 電源系統向 5V/12V 雙軌供電的需求日益增長。針對這一痛點&#xff0c;森利威爾電子重磅推出 DC30V/2.5A 同步降壓芯片 SL1581&#xff0c;憑借卓越的性能和創新設計&#xff0c;為工程師提供高可靠性、高性價比的電源解決方案。 …