Java實體類常用注解的用法
在 Java 開發(fā)中,實體類(Entity Class)是表示數(shù)據(jù)結構的重要組成部分。為了方便地對實體類進行操作和管理,我們經(jīng)常會使用一些注解來標記實體類的屬性和方法。
本文將介紹一些常用的 Java 實體類注解,并解釋它們的作用和用法。
一、屬性賦值,構造方法
引入依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>1、@Data
是 Lombok 提供的注解,用于簡化 Java 類的編寫,自動生成 Getter、Setter、equals、hashCode、toString 等方法。@Data 注解包含以下注解的功能:
@Getter:自動生成 Getter 方法。@Setter:自動生成 Setter 方法。@ToString:自動生成 toString 方法。@EqualsAndHashCode:自動生成 equals 和 hashCode 方法。
使用 @Data 注解可以減少重復的樣板代碼,提高代碼的簡潔性和可讀性。例如:
@Data
public class Person {
private String name;
private int age;
}上述代碼等效于手動編寫了以下代碼:
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}可以看到,使用 @Data 注解可以大大簡化類的編寫,減少了樣板代碼。
2、@NoArgsConstructor、@AllArgsConstructor
@NoArgsConstructor相當于無參構造方法、@AllArgsConstructor相當于有參構造方法
二、數(shù)據(jù)庫映射
以上是mybatis-plus常用實體注解
1、@TableName
表名注解,標識實體類對應的表
2、@TableId
主鍵注解,與@TableField不能同時使用
3、@TableField
字段注解(非主鍵)
使用:
@TableName("student")
public class Student{
@TableId
private String id;
@TableField("stu_name")
private String stuName;
@TableField("stu_age")
private Integer stuAge;
@TableField("birth_date")
private Date birthDate;
}三、屬性格式校驗
1、@NotNull
被注釋的字段不能為空
2、@NotEmpty
被注釋的字符串必須非空
3、@Email
被注釋的元素必須是電子郵件地址
4、@Pattern
正則校驗,例如:
@Pattern(regexp="1\\d{10}",message="手機號格式錯誤")四、日期格式轉(zhuǎn)換
1、@DatetimeFormat
將String轉(zhuǎn)換成Date。
2、@JsonFormat(pattern=“yyyy-MM-dd”)
將Date轉(zhuǎn)換成指定時間格式的String。
@JsonFormat(pattern = "yyyy-MM-dd") private Date createTime;
3、@JsonFormat(pattern=“yyyy-MM-dd”,timezone=“GMT+8”)
會讓時間以0區(qū)時間顯示。
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") private Date createTime;
五、類/屬性說明
1、@ApiModel
用于實體類,表示對類進行說明,用于參數(shù)用實體類接收。
2、@ApiModelProperty
用于類中屬性,表示對 屬性的說明。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring MVC 響應處理頁面、數(shù)據(jù)與狀態(tài)配置的方法
本文給大家介紹Spring MVC 響應處理頁面、數(shù)據(jù)與狀態(tài)配置的相關知識,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-11-11
SpringBoo WebFlux+MongoDB實現(xiàn)非阻塞API過程
本文介紹了如何使用SpringBootWebFlux和MongoDB實現(xiàn)非阻塞API,通過響應式編程提高系統(tǒng)的吞吐量和響應性能,適用于高并發(fā)場景2025-12-12
SpringCloud服務的發(fā)現(xiàn)與調(diào)用詳解
在Java微服務越來越火的今天。幾乎什么公司都在搞微服務。而使用的比較多的就是Spring?Cloud技術棧。今天就來研究一下Spring?Cloud中服務發(fā)現(xiàn)與調(diào)用的基本原理2022-07-07
idea如何debug看springsecurity的過濾器順序
這篇文章主要介紹了idea如何debug看springsecurity的過濾器順序,文中通過圖文結合的方式給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-04-04
Java中通過jsch來連接遠程服務器執(zhí)行l(wèi)inux命令
這篇文章主要介紹了Java中通過jsch來連接遠程服務器執(zhí)行l(wèi)inux命令的相關資料,需要的朋友可以參考下2016-03-03

