创表小笔记

417 阅读4分钟

一.第一张表,参数表

欲使用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就不会出现这种时差的问题。