Java实体类常用注解

07-17 466阅读

文章目录

  • 前言
  • 一、属性赋值,构造方法
    • 1、@Data
    • 2、@NoArgsConstructor、@AllArgsConstructor
    • 二、数据库映射
      • 1、@TableName
      • 2、@TableId
      • 3、@TableField
      • 三、属性格式校验
        • 1、@NotNull
        • 2、@NotEmpty
        • 3、@Email
        • 4、@Pattern
        • 四、日期格式转换
          • 1、@DatetimeFormat
          • 2、@JsonFormat(pattern="yyyy-MM-dd")
          • 3、@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
          • 五、类/属性说明
            • 1、@ApiModel
            • 2、@ApiModelProperty

              前言

              在 Java 开发中,实体类(Entity Class)是表示数据结构的重要组成部分。为了方便地对实体类进行操作和管理,我们经常会使用一些注解来标记实体类的属性和方法。本文将介绍一些常用的 Java 实体类注解,并解释它们的作用和用法。

              Java实体类常用注解
              (图片来源网络,侵删)

              一、属性赋值,构造方法

              引入依赖:

                  org.projectlombok
                  lombok
                  1.18.4
              
              

              1、@Data

              是 Lombok 提供的注解,用于简化 Java 类的编写,自动生成 Getter、Setter、equals、hashCode、toString 等方法。@Data 注解包含以下注解的功能:

              1. @Getter:自动生成 Getter 方法。
              2. @Setter:自动生成 Setter 方法。
              3. @ToString:自动生成 toString 方法。
              4. @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相当于有参构造方法

              二、数据库映射

              以上是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="手机号格式错误")
              

              四、日期格式转换

              1、@DatetimeFormat

              将String转换成Date。

              2、@JsonFormat(pattern=“yyyy-MM-dd”)

              将Date转换成指定时间格式的String。

              @JsonFormat(pattern = "yyyy-MM-dd")
              private Date createTime;
              

              3、@JsonFormat(pattern=“yyyy-MM-dd”,timezone=“GMT+8”)

              会让时间以0区时间显示。

              @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
              private Date createTime;
              

              五、类/属性说明

              1、@ApiModel

              用于实体类,表示对类进行说明,用于参数用实体类接收。

              2、@ApiModelProperty

              用于类中属性,表示对 属性的说明。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]