一、解释
这些注解是Java中常用的Lombok库和MyBatis-Plus框架提供的,用于简化实体类的开发和ORM映射。下面是对每个注解的解释:
1. **@Data**:
- 这是Lombok库的一个综合注解,包含了以下几个注解的功能:
- `@Getter`: 为所有字段生成getter方法。
- `@Setter`: 为所有字段生成setter方法。
- `@ToString`: 为类生成`toString()`方法。
- `@EqualsAndHashCode`: 为类生成`equals()`和`hashCode()`方法。
- `@RequiredArgsConstructor`: 为类生成包含`final`字段的构造函数。
- 使用这个注解可以大大减少样板代码,自动生成常用的方法,保持代码的简洁。
2. **@EqualsAndHashCode(callSuper = false)**:
- 这个注解也是Lombok库提供的,用于生成`equals()`和`hashCode()`方法。
- `callSuper = false`表示不调用父类的`equals()`和`hashCode()`方法,通常用于没有继承关系或者不希望将父类的字段考虑在内的情况。
- 如果类是从另一个类继承的,但你希望只比较当前类的字段,而不包括父类的字段,可以设置`callSuper = false`。
3. **@AllArgsConstructor**:
- 这个注解由Lombok提供,用于生成一个包含所有字段的构造函数(即使是`final`字段)。
- 当你希望在创建对象时能够直接设置所有字段的值,可以使用这个注解。
4. **@NoArgsConstructor**:
- 也是Lombok提供的,用于生成一个无参构造函数。
- 如果类中有`final`字段,Lombok会生成一个会将这些`final`字段初始化为默认值的构造函数。
- 使用场景包括ORM框架(如MyBatis-Plus)在实例化对象时通常需要无参构造函数。
5. **@TableName("sl_carriage")**:
- 这是MyBatis-Plus框架中的注解,用于指定实体类对应的数据库表名。
- `"sl_carriage"`表示这个实体类映射到数据库中的`sl_carriage`表。
- 通过这个注解,MyBatis-Plus可以将实体类与数据库表正确映射,以便执行CRUD操作。
### 为什么实体类上要用这些注解:
- **减少样板代码**:通过Lombok注解(如`@Data`、`@AllArgsConstructor`等),开发者可以避免手动编写getter、setter、构造函数、`equals()`、`hashCode()`等方法,提升代码可读性和开发效率。
- **确保ORM映射**:通过MyBatis-Plus的`@TableName`注解,可以准确地将Java实体类映射到数据库表,确保数据库操作的正确性。
- **便于框架工作**:如无参构造函数对于ORM框架至关重要,`@NoArgsConstructor`确保这些框架能正常工作。
这些注解的组合使用,使得实体类更加简洁且功能完备,简化了开发过程并减少了潜在的错误。
二、举例
package com.cyt.carriage.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.cyt.common.entity.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; /** * cyt 20240812 * 运费模板表 */ @Data // 提供get,set,tostring,equals,hashcode等方法 @EqualsAndHashCode(callSuper = false) // 提供equals,hashcode方法,不考虑父类继承的字段 @AllArgsConstructor // 提供包含所有字段的有参构造 @NoArgsConstructor // 提供无参构造 @TableName("sl_carriage") // 用于指定实体类对应的数据库表名 public class CarriageEntity extends BaseEntity { 。。。。。。 }标签:实体类,数据库,equals,import,注解,Lombok,构造函数 From: https://blog.csdn.net/qq_46637011/article/details/141141783