2.3 用户注册–持久层
①:选择数据表:t_user
②:创建数据表:t_user、t_address
CREATE TABLE t_user (
uid INT AUTO_INCREMENT COMMENT '用户id',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
password CHAR(32) NOT NULL COMMENT '密码',
salt CHAR(36) COMMENT '盐值',
phone VARCHAR(20) COMMENT '电话号码',
email VARCHAR(30) COMMENT '电子邮箱',
gender INT COMMENT '性别:0-女,1-男',
avatar VARCHAR(50) COMMENT '头像',
is_delete INT COMMENT '是否删除:0-未删除,1-已删除',
created_user VARCHAR(20) COMMENT '日志-创建人',
created_time DATETIME COMMENT '日志-创建时间',
modified_user VARCHAR(20) COMMENT '日志-最后修改执行人',
modified_time DATETIME COMMENT '日志-最后修改时间',
PRIMARY KEY (uid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE t_address (
aid INT AUTO_INCREMENT COMMENT '收货地址id',
uid INT COMMENT '归属的用户id',
name VARCHAR(20) COMMENT '收货人姓名',
province_name VARCHAR(15) COMMENT '省-名称',
province_code CHAR(6) COMMENT '省-行政代号',
city_name VARCHAR(15) COMMENT '市-名称',
city_code CHAR(6) COMMENT '市-行政代号',
area_name VARCHAR(15) COMMENT '区-名称',
area_code CHAR(6) COMMENT '区-行政代号',
zip CHAR(6) COMMENT '邮政编码',
address VARCHAR(50) COMMENT '详细地址',
phone VARCHAR(20) COMMENT '手机',
tel VARCHAR(20) COMMENT '固话',
tag VARCHAR(6) COMMENT '标签',
is_default INT COMMENT '是否默认:0-不默认,1-默认',
created_user VARCHAR(20) COMMENT '创建人',
created_time DATETIME COMMENT '创建时间',
modified_user VARCHAR(20) COMMENT '修改人',
modified_time DATETIME COMMENT '修改时间',
PRIMARY KEY (aid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
③:创建实体类基类
-
1:通过表的结构,提取出表的公共字段,放在一个实体类的基类当中,起名:BaseEntity
-
2:实现 Serializable接口;私有变量的get/set方法、equals和hashCode方法,toString方法或者直接使用@Data注解
-
`//实体类的基类:BaseEntity
public class BaseEntity implements Serializable {
private String created_user; //‘日志-创建人’,
private Date created_time ;//‘日志-创建时间’,
private String modified_user ; //‘日志-最后修改执行人’,
private Date modified_time; //‘日志-最后修改时间’,
@Override
public String toString() {
return “BaseEntity{” +
“created_user='” + created_user + ‘’’ +
“, created_time=” + created_time +
“, modified_user='” + modified_user + ‘’’ +
“, modified_time=” + modified_time +
‘}’;
}@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof BaseEntity)) return false;
BaseEntity that = (BaseEntity) o;
return Objects.equals(getCreated_user(), that.getCreated_user()) && Objects.equals(getCreated_time(), that.getCreated_time()) && Objects.equals(getModified_user(), that.getModified_user()) && Objects.equals(getModified_time(), that.getModified_time());
}@Override
public int hashCode() {
return Objects.hash(getCreated_user(), getCreated_time(), getModified_user(), getModified_time());
}public String getCreated_user() {
return created_user;
}public void setCreated_user(String created_user) {
this.created_user = created_user;
}public Date getCreated_time() {
return created_time;
}public void setCreated_time(Date created_time) {
this.created_time = created_time;
}public String getModified_user() {
return modified_user;
}public void setModified_user(String modified_user) {
this.modified_user = modified_user;
}public Date getModified_time() {
return modified_time;
}public void setModified_time(Date modified_time) {
this.modified_time = modified_time;
}
}`
④:创建用户的实体类,需要继承BaseEntity。
注意:
- 1:需要extends(继承) BaseEntity implements(实现) Serializable
- 2:基本类型推荐都使用包装类
- 3:任何的实体类都需要遵循三个方法:生成get/set方法,equals和hashCode方法,toString方法。
//用户实体类:springboot约定大于配置
public class User extends BaseEntity implements Serializable {
//基本类型推荐都使用包装类
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 Integer isDelete ;//'是否删除:0-未删除,1-已删除',改为驼峰命名法
//任何的实体类都需要遵循三个方法:生成get/set方法,equals和hashCode方法,toString方法,
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", salt='" + salt + '\'' +
", phone='" + phone + '\'' +
", email='" + email + '\'' +
", gender=" + gender +
", avatar='" + avatar + '\'' +
", isDelete=" + isDelete +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
if (!super.equals(o)) return false;
User user = (User) o;
return Objects.equals(getUid(), user.getUid()) && Objects.equals(getUsername(), user.getUsername()) && Objects.equals(getPassword(), user.getPassword()) && Objects.equals(getSalt()