| 简化pojo类的书写(getter、setter、tostring、equals、hascode.....) |
| |
| pojo: plain old/ordinary java object 简单的java对象,不包含业务逻辑、能够控制自己内部n个属性访问的java对象 |
pojo |
java beans |
不需要有无参构造函数 |
必须有无参构造函数 |
属性的访问权限无限制==>外部可通过属性名访问 |
private==>setter 和 getter |
没有业务逻辑 |
没有业务逻辑 |

| dto: data transfer object |
| |
| do: data object (表的字段一一对应的) |
| |
| po:persist object |
| |
| bo: business object |
| |
| vo: view/value object 值对象 |
| |
| DDD中: command、co、ao |
| |
| <dependency> |
| <groupId>org.projectlombok</groupId> |
| <artifactId>lombok</artifactId> |
| <version>1.18.10</version> |
| </dependency> |
| |
| |
| |
| |
| |
| -javaagent:E:\programs\eclipse\eclipse\lombok.jar |
| # 1.引入jar包 |
| <dependency> |
| <groupId>org.projectlombok</groupId> |
| <artifactId>lombok</artifactId> |
| <version>1.18.10</version> |
| </dependency> |
| |
| # 2.file -> settings -> annotation processors -> 勾选enable annotation processing |
| |
| # 3.安装lombok插件 |
| @AllArgsConstructor(access = AccessLevel.PRIVATE) |
| @NoArgsConstructor |
| @RequiredArgsConstructor |
| public class UserInfo { |
| private Long id; |
| private String name; |
| private String phone; |
| private Date birthDay; |
| private String address; |
| |
| |
| |
| @NonNull |
| private String nonNullProp; |
| |
| 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) |
| @Getter(value = AccessLevel.NONE) |
| private String address; |
| |
| public String getName() { |
| return "我自己写的getName方法" +name; |
| } |
| } |
| @ToString( |
| |
| exclude = {"name"}, |
| callSuper = true |
| ) |
| public class UserInfo3 { |
| private Long id; |
| private String name; |
| private String phone; |
| private Date birthDay; |
| private String address; |
| } |
| |
| @EqualsAndHashCode(of = {"id"}) |
| public class UserInfo4 { |
| private Long id; |
| private String name; |
| private String phone; |
| private Date birthDay; |
| private String address; |
| } |
| |
| # 测试:由于只使用id生成equals和hashCode方法,所以只需要id相同,就是同一个对象 |
| # 如果不配置of = {"id"},则需要所有的属性值相同,才是同一个对象 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下