# :-: 建Entity
## 创建实体类
1. 因为`POJO / VO / DTO`等等是会被其他模块依赖引用的,所以我们需要把实体类建在`applets-demo-api`工程内。
![](https://img.kancloud.cn/8b/4d/8b4de409804555b2890cc80f55f450e2_843x410.png)
2. 参照新建表的字段,我们给实体类增加如下字段。
~~~
package com.applets.system.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @ClassName HomeConfig
* @Description TODD
* @Author 杨勇[yangyong]
* @Date 2019/5/6 13:20
* @Version 1.0
**/
@Data
@TableName("applets_active")
@ApiModel(value = " AppletsActive 对象" , description = "AppletsActive 对象")
public class Active implements Serializable {
private static final long serialVersionUID = 6390330037639255869L;
/**
* 主键
*/
@TableId(value = "id" , type = IdType.AUTO)
@ApiModelProperty(value = "主键")
private Long id;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String activeName;
/**
* 活动图片
*/
@ApiModelProperty(value = "活动图片")
private String activeImage;
@ApiModelProperty(value = "类型[0-小程序,1-h5]")
private Integer type;
@ApiModelProperty(value = "跳转url")
private String activeUrl;
/**
* 活动状态
*/
@ApiModelProperty(value = "活动状态")
private Integer status;
}
~~~
### 注:
* 看到这里可能有小伙伴就有疑问了,为什么数据库中字段以下划线分割,到了实体类就变成了驼峰?
* 因为这么做更加优雅,也更加规范。
* 比如Mysql数据库字段命名为 blogTitle,乍一看没问题,但到了oracle就变成了 BLOGTITLE,到了postgresql就变成了blogtitle,可读性非常差。
* 比如实体类字段命名为blog\_title,则get时变成了 getBlog\_title(),也非常的不美观。
* 但这都是为了代码更加优雅才定的小规范,若觉得不妨碍整体美观度,数据库字段也可以变为驼峰,实体类也可以变为下划线分割。
## 实体类修饰
1. 可能会有小伙伴立马给他加上`get set`的方法,如下
~~~
/**
* @ClassName HomeConfig
* @Description TODD
* @Author 杨勇[yangyong]
* @Date 2019/5/6 13:20
* @Version 1.0
**/
@TableName("applets_active")
@ApiModel(value = " AppletsActive 对象", description = "AppletsActive 对象")
public class Active implements Serializable {
private static final long serialVersionUID = 6390330037639255869L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value = "主键")
private Long id;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String activeName;
/**
* 活动图片
*/
@ApiModelProperty(value = "活动图片")
private String activeImage;
@ApiModelProperty(value = "类型[0-小程序,1-h5]")
private Integer type;
@ApiModelProperty(value = "跳转url")
private String activeUrl;
/**
* 活动状态
*/
@ApiModelProperty(value = "活动状态")
private Integer status;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getActiveName() {
return activeName;
}
public void setActiveName(String activeName) {
this.activeName = activeName;
}
public String getActiveImage() {
return activeImage;
}
public void setActiveImage(String activeImage) {
this.activeImage = activeImage;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getActiveUrl() {
return activeUrl;
}
public void setActiveUrl(String activeUrl) {
this.activeUrl = activeUrl;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
~~~
3. 针对于这种情况,有了`Lombok`后,可以大大减少代码量了,只需一个`@Data`注解即可实现我们要的功能。
~~~
@Data
@TableName("applets_active")
@ApiModel(value = " AppletsActive 对象" , description = "AppletsActive 对象")
public class Active implements Serializable {
private static final long serialVersionUID = 6390330037639255869L;
/**
* 主键
*/
@TableId(value = "id" , type = IdType.AUTO)
@ApiModelProperty(value = "主键")
private Long id;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String activeName;
/**
* 活动图片
*/
@ApiModelProperty(value = "活动图片")
private String activeImage;
@ApiModelProperty(value = "类型[0-小程序,1-h5]")
private Integer type;
@ApiModelProperty(value = "跳转url")
private String activeUrl;
/**
* 活动状态
*/
@ApiModelProperty(value = "活动状态")
private Integer status;
}
~~~
3. 一般实体类都需要用到缓存、序列化等等,所以要实现序列化接口
~~~
public class Active implements Serializable {
private static final long serialVersionUID = 6390330037639255869L;
}
~~~
4. 加上`mybatis-plus`的注解,因为id为自增,所以不需要配置。若id为自定义,比如使用snow-flake算法,则需要在`private Integer id`上配置注解`@TableId(value = "id", type = IdType.ID_WORKER)`。最终版如下:
~~~
@Data
@TableName("applets_active")
@ApiModel(value = " AppletsActive 对象" , description = "AppletsActive 对象")
public class Active implements Serializable {
private static final long serialVersionUID = 6390330037639255869L;
/**
* 主键
*/
@TableId(value = "id" , type = IdType.AUTO)
@ApiModelProperty(value = "主键")
private Long id;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String activeName;
/**
* 活动图片
*/
@ApiModelProperty(value = "活动图片")
private String activeImage;
@ApiModelProperty(value = "类型[0-小程序,1-h5]")
private Integer type;
@ApiModelProperty(value = "跳转url")
private String activeUrl;
/**
* 活动状态
*/
@ApiModelProperty(value = "活动状态")
private Integer status;
}
~~~
- 序
- 快速开始
- 环境要求
- 环境准备
- 工程导入
- 工程运行
- 技术基础
- Java8
- Lambda
- Lambda 受检异常处理
- Stream 简介
- Stream API 一览
- Stream API(上)
- Stream API(下)
- Optional 干掉空指针
- 函数式接口
- 新的日期 API
- Lombok
- SpringMVC
- Swagger
- Mybaties
- Mybaties-plus
- 开发初探
- 新建微服务工程
- 第一个API
- API鉴权
- API响应结果
- Redis 缓存
- 第一个CRUD
- 建表
- 建Entity
- 建Service和Mapper
- 新增API
- 修改API
- 删除API
- 查询API
- 单条查询
- 多条查询
- 分页
- 微服务远程调用
- 声明式服务调用Feign
- 熔断机制 Hystrix
- 开发进阶