# :-: 建Entity
## 創建實體類
1. 因為`POJO / VO / DTO`等等是會被其他模塊依賴引用的,所以我們需要把實體類建在`applets-demo-api`工程內。

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
- 開發進階