一.第一张表,参数表
欲使用mybatis-plus其中以下四个字段id、is_delete、create_time、update_time名固定,plus中会识别
1.id
一般主键名为id。一般实现自动递增。
2.is_delete
用于删除标记,确定是否正常使用。注意类型tinyint与长度3,和不是null。并给个默认值0,默认正常使用。
3.create_time和update_time
默认值为CURRENT_TIMESTAMP和勾选根据当前时间戳更新的区别:
默认值为 CURRENT_TIMESTAMP 表示当插入数据的时候,该字段默认值为当前时间
勾选框 表示每次更新这条数据的时候,该字段都会更新成当前时间
如下为create_time
如下为update_time
4.def
默认值字段需将默认设为空字符,不能为null
实体类:
@Data
public class Parameter extends BaseLogicDeleteEntity implements Serializable {
/* *//** 参数表id*//*
private Integer id;*/
/** 参数名称 */
private String name;
/** 赛事或双创类型 0:赛事 1:双创 */
private Integer matchProjectType;
/** 赛事或双创id */
private Integer matchProjectId;
/** 参数样式类型 0:文本输入框 1:下拉选择框 2:单选 3:复选 4:时间或时间范围 5:附件类型 */
private Integer parameterType;
/* *//** 修改时间 *//*
private Timestamp updateTime;*/
/** 默认值 */
private String def;
/** 排序字段 */
private Integer sortId;
/* *//** 创建时间 *//*
private Timestamp createTime;
*//** 删除标记:0代表正常,1代表删除 *//*
private Integer isDeleted;*/
}
如上,与数据库字段对应。注意createTime和updateTime要记录年月日时分秒则用TimeStamp类。Date、DateTime、TimeStamp、Time的区别见结尾拓展。
其中继承BaseLogicDeleteEntity,则是使用mybatis-plus的isDeleted,会进行识别进行相关编写
如下为BaseLogicDeleteEntity父类
public class BaseLogicDeleteEntity extends BaseEntity {
/**BaseLogicDeleteEntity
* 是否被删除,0:未被删除,1:删除
* 0:审核未受理 1:已审核
*/
@TableLogic
@TableField(select = false)
@ApiModelProperty(value = "是否被删除",hidden = true)
protected Integer isDeleted;
}
如下为BaseEntity父类,同理BaseLogicDeleteEntity
public class BaseEntity implements Serializable {
protected static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
protected Integer id;
@TableField(fill = FieldFill.INSERT)
@DateTimeFormat(pattern = DateUtil.yyyy_MM_dd_HH_mm_ss)
@JsonFormat(pattern = DateUtil.yyyy_MM_dd_HH_mm_ss, timezone = "GMT+8")
@ApiModelProperty(value = "创建时间", hidden = true)
protected Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
@DateTimeFormat(pattern = DateUtil.yyyy_MM_dd_HH_mm_ss)
@JsonFormat(pattern = DateUtil.yyyy_MM_dd_HH_mm_ss, timezone = "GMT+8")
@ApiModelProperty(value = "更新时间" ,hidden = true)
protected Date updateTime;
}
二、第二张表,参数值表
实体类:
@Data
public class ParameterValue extends BaseLogicDeleteEntity implements Serializable {
/* *//** 参数值表id*//*
private Integer id;*/
/** 参数表id */
private Integer parameterId;
/** 参数值内容 */
private String name;
/* *//** 创建时间 *//*
private Timestamp createTime;
*//** 修改时间 *//*
private Timestamp updateTime;
*//** 删除标记:0代表正常,1代表删除 *//*
private Integer isDeleted;*/
/** 排序字段 */
private Integer sortId;
}
三、第三章表,参数表和参数值表保存表
拓展:Date、DateTime、TimeStamp、Time的区别
Date
| 名称 | 解释 |
|---|---|
| 显示格式 | YYYY-MM-DD |
| 显示范围 | 1601-01-01 到 9999-01-01 |
| 应用场景 | 当业务需求中只需要精确到天时,可以用这个时间格式 |
| 后台取值 | @JSONField(format=”yyyy-MM-dd”) |
DateTime
| 名称 | 解释 |
|---|---|
| 显示格式 | YYYY-MM-DD HH:mm:ss |
| 显示范围 | 1601-01-01 00:00:00 到 9999-12-31 23:59:59 |
| 应用场景 | 当业务需求中需要精确到秒时,可以用这个时间格式 |
| 后台取值 | @JSONField(format=”yyyy-MM-dd HH:mm:ss”) |
TimeStamp
| 名称 | 解释 |
|---|---|
| 显示格式 | YYYY-MM-DD HH:mm:ss |
| 显示范围 | 1601-01-01 00:00:00 到 9999-12-31 23:59:59 |
| 应用场景 | 当业务需求中需要精确到秒或者毫秒时,或者该系统用于不同时区,可以用这个时间格式 |
| 后台取值 | @JSONField(format=”yyyy-MM-dd HH:mm:ss:SSS”)(这里只会精确到秒) |
Time
| 名称 | 解释 |
|---|---|
| 显示格式 | HH:mm:ss |
| 显示范围 | 00:00:00 到 23:59:59 |
| 应用场景 | 当业务需求中只需要每天的时间,可以用这个时间格式 |
| 后台取值 | @JSONField(format=”HH:mm”)(这里是只精确到分,数据库存的也就是只精确到分,比如 09:36:00,如果需要精确到秒。需要使用@JSONField(format=”HH:mm:ss”)) |
Date,DateTime,TimeStamp和Time 比较
Date,DateTime,Time 这里就不比较了,三者显示以及精度都不一样,需要大家根据具体需求,具体选择。 DateTime和TimeStamp最大的区别只是用的场景不同,如果你的应用 是用于不同时区(就是国内和国外同时使用),这时候如果用dateTime就会出现各种各样的问题,但是如果使用TimeStamp就不会出现这种时差的问题。