Skip to content
On this page

创建实体类

参照新建表的字段,我们给实体类增加如下字段。

java
public class DemoUser {

  /**
  * 主键
  */
	private Integer id;

  /**
  * 名称
  */
	private String name;

  /**
	 * 创建人
	 */
	private Integer createBy;

	/**
	 * 创建时间
	 */
	private LocalDateTime createTime;

	/**
	 * 更新人
	 */
	private Integer modifyBy;

	/**
	 * 更新时间
	 */
	private LocalDateTime modifyTime;

	/**
	 * 显示顺序
	 */
	private Integer displayOrder;

	/**
	 * 备注
	 */
	private String remark;

	/**
	 * 1:生效;0:停用
	 */
	private String active;

}

  • 看到这里可能有小伙伴就有疑问了,为什么数据库中字段以下划线分割,到了实体类就变成了驼峰?
  • 因为这么做更加优雅,也更加规范。
  • 比如 Mysql 数据库字段命名为 createBy,乍一看没问题,但到了 oracle 就变成了 CREATEBY,到了 postgresql 就变成了 createby,可读性非常差。
  • 比如实体类字段命名为 create_by,则 get 时变成了 getCreate_by(),也非常的不美观。
  • 但这都是为了代码更加优雅才定的小规范,若觉得不妨碍整体美观度,数据库字段也可以变为驼峰,实体类也可以变为下划线分割。

实体类修饰

  1. 可能会有小伙伴立马给他加上get set的方法,如下
java
public class DemoUser {
  /**
  * 主键
  */
	private Integer id;

	/**
	 * 名称
	 */
	private String name;

	/**
	 * 创建人
	 */
	private Integer createBy;

	/**
	 * 创建时间
	 */
	private LocalDateTime createTime;

	/**
	 * 更新人
	 */
	private Integer modifyBy;

	/**
	 * 更新时间
	 */
	private LocalDateTime modifyTime;

	/**
	 * 显示顺序
	 */
	private Integer displayOrder;

	/**
	 * 备注
	 */
	private String remark;

	/**
	 * 1:生效;0:停用
	 */
	private String active;

  public String getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getCreateBy() {
		return createBy;
	}

	public void setCreateBy(Integer createBy) {
		this.createBy = createBy;
	}

	public LocalDateTime getCreateTime() {
		return createTime;
	}

	public void setCreateTime(LocalDateTime createTime) {
		this.createTime = createTime;
	}

	public Integer getModifyBy() {
		return modifyBy;
	}

	public void setModifyBy(Integer modifyBy) {
		this.modifyBy = modifyBy;
	}

	public LocalDateTime getModifyTime() {
		return modifyTime;
	}

	public void setModifyTime(LocalDateTime modifyTime) {
		this.modifyTime = modifyTime;
	}

	public Integer getDisplayOrder() {
		return displayOrder;
	}

	public void setDisplayOrder(Integer displayOrder) {
		this.displayOrder = displayOrder;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public String getActive() {
		return active;
	}

	public void setActive(String active) {
		this.active = active;
	}
}
  1. 针对于这种情况,有了Lombok后,可以大大减少代码量了,只需一个 @Data 注解即可实现我们要的功能。
java
@Data
public class DemoUser {
	/**
	 * 主键
	 */
	private Integer id;

	/**
	 * 名称
	 */
	private String name;

	/**
	 * 创建人
	 */
	private Integer createBy;

	/**
	 * 创建时间
	 */
	private LocalDateTime createTime;

	/**
	 * 更新人
	 */
	private Integer modifyBy;

	/**
	 * 更新时间
	 */
	private LocalDateTime modifyTime;

	/**
	 * 显示顺序
	 */
	private Integer displayOrder;

	/**
	 * 备注
	 */
	private String remark;

	/**
	 * 1:生效;0:停用
	 */
	private String active;

}
  1. 一般实体类都需要用到缓存、序列化等等,所以要实现序列化接口
java
public class DemoUser implements Serializable {
   private static final long serialVersionUID = 1L;
}
  1. 加上mybatis-plus的注解。最终版如下:
java
@Data
@TableName("cbb_demo_user")
public class DemoUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
    * 主键
    */
    @TableId
    private Integer id;

    /**
    * 名称
    */
    private String name;

    /**
    * 创建人
    */
    @TableField(fill = FieldFill.INSERT)
    private Integer createBy;

    /**
    * 创建时间
    */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
    * 更新人
    */
    @TableField(fill = FieldFill.UPDATE)
    private Integer modifyBy;

    /**
    * 更新时间
    */
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime modifyTime;

    /**
    * 显示顺序
    */
    private Integer displayOrder;

    /**
    * 备注
    */
    private String remark;
}