作用 简化pojo类的书写(getter、setter、tostring、equals、hascode.....) pojo: plain old/ordinary java object 简单的java对象,不包含业务逻辑、能够控制自己内部n个属性访问的java对象 pojo与javabeans pojo
- 作用
pojo: plain old/ordinary java object 简单的java对象,不包含业务逻辑、能够控制自己内部n个属性访问的java对象
- pojo与javabeans
pojo
java beans
不需要有无参构造函数
必须有无参构造函数
属性的访问权限无限制==>外部可通过属性名访问
private==>setter 和 getter
没有业务逻辑
没有业务逻辑
- 各类pojo
do: data object (表的字段一一对应的)
po:persist object
bo: business object
vo: view/value object 值对象
DDD中: command、co、ao
- eclipse中使用配置
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
# java -jar lombok-1.18.10.jar
# 在弹出的窗口中选择eclipse安装目录即可并重启
# 第2步相当于修改了eclipse.ini
-javaagent:E:\programs\eclipse\eclipse\lombok.jar
- idea中使用配置
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
# 2.file -> settings -> annotation processors -> 勾选enable annotation processing
# 3.安装lombok插件
- 构造函数相关注解
@NoArgsConstructor // 无参构造器
@RequiredArgsConstructor // 为必须要传的属性生成构造器
public class UserInfo {
private Long id;
private String name;
private String phone;
private Date birthDay;
private String address;
/**
* @RequiredArgsConstructor 包含两种属性
*/
@NonNull // 1.当属性被加了@NonNull,则该属性会被包含在构造函数中
private String nonNullProp;
// 2. final:定义的时候初始化/构造函数中初始化,当加了final,则该属性会被包含在构造函数中
private final String finalProp;
}
- getter 和 setter
public class UserInfo2 {
@Getter(value = AccessLevel.PUBLIC) // 指定为默认
private Long id;
private String name;
private String phone;
private Date birthDay;
@Setter(value = AccessLevel.NONE) // none表示不生成
@Getter(value = AccessLevel.NONE)
private String address;
// 自己写的优先级更高
public String getName() {
return "我自己写的getName方法" +name;
}
}
- ToString
// of = {"id"}, // 只为某个字段生成tostring方法
exclude = {"name"}, // 排除某个字段不生成tostring方法
callSuper = true // 指定调用父类的toString+本类的toString
)
public class UserInfo3 {
private Long id;
private String name;
private String phone;
private Date birthDay;
private String address;
}
- EqualsAndHashCode
@EqualsAndHashCode(of = {"id"}) // 只使用id来生成equals和hashCode方法
public class UserInfo4 {
private Long id;
private String name;
private String phone;
private Date birthDay;
private String address;
}
# 测试:由于只使用id生成equals和hashCode方法,所以只需要id相同,就是同一个对象
# 如果不配置of = {"id"},则需要所有的属性值相同,才是同一个对象