实体类的设计——公共实体类



  • 在上图中可以看出,这两个表有四个字段是相同的,可以提取出来

  • 提取出表的公共字段,放在一个实体类的基类中,起名为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方法

}






posted @ 2022-04-03 14:48  卡卡发  阅读(553)  评论(0编辑  收藏  举报