大家好,欢迎来到IT知识分享网。
create table tb_dept( dept_id varchar(32) not null primary key, dept_name varchar(32) not null, dept_number varchar(32) not null, create_time datetime, create_by varchar(32), remark varchar(64), update_time datetime, update_by varchar(32), logic_delete tinyint(1) default 0 ); create table tb_employee( employee_id varchar(32) not null primary key, employee_name varchar(32) not null, create_time datetime, create_by varchar(32), update_time datetime, update_by varchar(32), logic_delete tinyint(1) default 0 );
1.entity
@Data @AllArgsConstructor @NoArgsConstructor @TableName("tb_dept")//指定映射的表名 public class Dept{
@TableId(value = "dept_id", type = IdType.ASSIGN_ID)//主键,生成策略 private String deptId; private String deptNumber; private String deptName; private String createBy; private String remark;//备注 private LocalDateTime createTime; private String updateBy; private LocalDateTime updateTime; / * 逻辑删除(0:未删除,1:已删除) */ @JsonIgnore @TableLogic private Integer logicDelete; }
员工实体类:
@Data @AllArgsConstructor @NoArgsConstructor @TableName("tb_employee")//指定映射的表名 public class Employee{
@TableId(value = "employee_id", type = IdType.ASSIGN_ID)//指定主键 private String employeeId; private String employeeName; private String remark; private String createBy; private LocalDateTime createTime; private String updateBy; private LocalDateTime updateTime; / * 逻辑删除(0:未删除,1:已删除) */ @JsonIgnore @TableLogic private Integer logicDelete; }
2.VO
VO:view object,视图对象。将需要返回给前端的字段封装成一个对象。业务数据需求:按部门id查询部门详情与相关员工信息。
@Data @AllArgsConstructor @NoArgsConstructor public class DeptVO{
private String deptId; private String deptNumber; private String deptName; private String createBy; private String remark; private LocalDateTime createTime; private String updateBy; private LocalDateTime updateTime; private List<Employee> employeeList;//员工列表 }
VO的内容基本上和entity一样,考虑到对于不同业务所需的字段不一样【某些字段对前端不重要,就不封装进去】,封装不一样的VO。
一般发起查询请求时,后端给前端的数据是一个VO实体。根据不同的业务需求,可以制定多个VO类,以满足特定需求。
3.DTO
@Data @AllArgsConstructor @NoArgsConstructor public class DeptDTO{
/ * 新增 */ public interface AddDept{
} / * 修改 */ public interface EditDept{
} / * 部门id,校验,在编辑部门信息时,需要传递deptId字段 */ @NotBlank(message = "标准id不能为空", groups = {
EditDept.class}) private String deptId; / *部门名称,不管是新增还是修改,部门名称都不能为空 */ @NotBlank(message = "标准名称不能为空", groups = {
AddDept.class, EditDept.class}) @Length(message = "最大长度不能超过32个字符", max = 32, groups = {
AddDept.class, EditDept.class}) private String deptName; / *部门编号 */ @NotBlank(message = "标准名称不能为空", groups = {
AddDept.class, EditDept.class}) @Length(message = "最大长度不能超过32个字符", max = 32, groups = {
AddDept.class, EditDept.class}) private String deptNumber; / *备注,部门信息描述,可填可不填,不加校验 */ private String remark; }
控制层使用:
@PostMapping("/addDept") public AjaxResult addDept(@RequestBody @Validated(DeptDTO.AddDept.class) DeptDTO deptDTO) {
... }
一般新增和更改业务中,前端向后端传递的表单将封装成一个DTO对象。
4.QO
QO:查询对象。将查询条件封装成一个QO对象。业务描述:可通过部门名称、部门编号,创建的时间段进行查询。
@Data @AllArgsConstructor @NoArgsConstructor public class DeptQO{
private String deptName; private String deptNumber; / * 开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime beginTime; / * 结束时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; }
一般条件查询请求时,从前端传递一个QO对象到后端。
总结:entity、VO、DTO内容大致一样,存在小小的差别。在没有要求代码规范的情况下,用一个Entity就可以了。如果有代码规范的要求,以便多人协作开发,可以参考本文章的写法。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144453.html