【MybatisPlus】公共轮子

本文介绍了SQL-DDL语句创建数据库表的规范,包括字段类型、注释、逻辑删除等,并展示了符合规范的`atta_mail_event_record`表。同时,详细讲解了与之对应的实体类`EventDO`的设计,包括Mybatis-plus中的自动填充策略。通过实例展示了如何设置插入和更新时的默认值。
摘要由CSDN通过智能技术生成

前言

重复代码写一次就够了,剩下的交给ctrl+c和ctrl+v吧。

内容

SQL-DDL

CREATE TABLE IF NOT EXISTS `atta_mail_event_record` (
  id bigint unsigned not null AUTO_INCREMENT comment '主键',
  event_record_id bigint not null comment '事件记录id',
  ext varchar(512) null comment '扩展字段',
  created_time datetime not null comment '创建时间',
  modified_time datetime not null comment '更新时间',
  version int default 1 not null comment '版本号',
  deleted tinyint default '0' not null comment '是否删除',
  PRIMARY KEY (`id`),
  unique key `uniq_date_esp_ip_type` (`cur_date`, `esp`, `ip`, `event_type`),
  key `idx_date_esp_type`(`cur_date`,`esp`,`event_type`),
  key `idx_date_type`(`cur_date`,`event_type`)
) AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '邮件事件记录表';

以上ddl遵守‘数据库规范’如下:

  1. id:类型是bigint unsigned,无负数,增大了正数范围;
  2. commont:声明了字段含义;
  3. 必备字段:id、created_time、modified_time、version;
  4. 逻辑删除:deleted;且定义为tinyint类型;
  5. 索引取名;

实体类

package com.atta.infra.edmmailserv.component.repository.dao.pojo;

import com.atta.infra.dal.BaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("atta_mail_event")
public class EventDO {

    /**
     * 主键ID。  插入的时候不需要额外赋值,雪花算法会自动生成
     */
    @TableId(value = "id", type = IdType.ID_WORKER)
    private Long id;

    /**
     * 事件ID
     */
    private Long eventId;


    /**
     * 数据是否有效 0-有效  1-无效
     */
    private Integer deleted;

    /**
     * 数据版本
     */
    private Integer version;

    /**
     * 创建时间.  插入的时候,手动赋值。
     */
    // @TableField(fill = FieldFill.INSERT)
    private Date createdTime;

    /**
     * 更新时间。  更新的时候,手动赋值。
     */
    // @TableField(fill = FieldFill.UPDATE)
    private Date modifiedTime;

    /**
     * 扩展字段
     */
    private String ext;


}

如果想要让@TableField(fill = FieldFill.INSERT/UPDATE)生效,需要实现MetaObjectHandler接口然后重写插入填充和更新填充两个方法。Mybatis-plus实现自动填充创建时间、更新时间

插入

        MailEventRecordDO mailEventRecordDO = new MailEventRecordDO();
        mailEventRecordDO.setEventRecordId(IdWorker.getId());
        mailEventRecordDO.setCreatedTime(new Date());
        mailEventRecordDO.setModifiedTime(new Date());
        mailEventRecordDO.setVersion(0);
        mailEventRecordDO.setDeleted(0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@来杯咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值