实体类的设计——公共实体类
-
在上图中可以看出,这两个表有四个字段是相同的,可以提取出来
-
提取出表的公共字段,放在一个实体类的基类中,起名为BaseEntity
-
以后新建所有对象的时候都继承它,就省的每次都要写这些共有的属性了
1.公共实体类
BaseEntity:
package com.cy.store.entity;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
/**作为实体类的基类 */
//继承Serializable的原因:1.存储的内容可能会超出,然后就会存储到内存中,要用的时候要序列化,所以这里继承是为了有备无患;2.因为要在网络中以流的形式传输
public class BaseEntity implements Serializable {
private String createdUser; //日志-创建人
private Date createdTime ;//日志-创建时间
private String modifiedUser; //日志-最后修改执行人
private Date modifiedTime; //日志-最后修改时间
public String getCreatedUser() {
return createdUser;
}
public void setCreatedUser(String createdUser) {
this.createdUser = createdUser;
}
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
public String getModifiedUser() {
return modifiedUser;
}
public void setModifiedUser(String modifiedUser) {
this.modifiedUser = modifiedUser;
}
public Date getModifiedTime() {
return modifiedTime;
}
public void setModifiedTime(Date modifiedTime) {
this.modifiedTime = modifiedTime;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BaseEntity that = (BaseEntity) o;
return Objects.equals(createdUser, that.createdUser) && Objects.equals(createdTime, that.createdTime) && Objects.equals(modifiedUser, that.modifiedUser) && Objects.equals(modifiedTime, that.modifiedTime);
}
@Override
public int hashCode() {
return Objects.hash(createdUser, createdTime, modifiedUser, modifiedTime);
}
@Override
public String toString() {
return "BaseEntity{" +
"createdUser='" + createdUser + '\'' +
", createdTime=" + createdTime +
", modifiedUser='" + modifiedUser + '\'' +
", modifiedTime=" + modifiedTime +
'}';
}
}
该实体类加上了equal() and hashCode()方法
参考链接:https://blog.csdn.net/zhang0558/article/details/53166184
2.用户实体类
需要继承BaseEntity基类
User:
package com.cy.store.entity;
import java.io.Serializable;
import java.util.Objects;
/** 用户的实体类 */
public class User extends BaseEntity implements Serializable { //这里有个问题:如果父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口
//这里不用int用包装类Integer是因为包装类有一些API,以后遇到一些判断之类的操作会比较方便
private Integer uid;//用户id
private String username;//用户名
private String password;//密码
private String salt;//盐值
private String phone;//电话号码
private String email;//'电子邮箱',
private Integer gender;//性别:0-女,1-男',
private String avatar;//头像
private int isDelete;//是否删除:0-未删除,1-已删除
//get和set方法、equals和hashCode方法、toString方法
}