Mybatis Plus的主键id生成策略方式

前言

Mybatis Plus版本是3.3.0

目前手上的项目中用的数据库是MySQL,所有的表中主键ID都是int自增长,现在引入了几个外部的表,主键ID是用的String类型的UUID,就不能用代码生成器自动生成的默认的策略了。

  1. 原来的表中的id(mp的代码生成器默认),如:
/**
 * <p>
 * 发票表
 * </p>
 *
 * @author zhangchao
 * @since 2019-09-16
 */
@Data
public class ApplyInvoices {

    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;

    /**
     * 发票号
     */
    @TableField("INVOICE_NO")
    private String invoiceNo;

    /**
     * 发票流水号
     */
    @TableField("CUSTOMS_CODE")
    private String customsCode;
}
  1. 查阅mp的官方文档@TableId注解,可知有如下几种方式:

    @TableId

    • 描述:主键主键

      属性类型必须指定默认值描述
      valueString“”主键字段名
      typeEnumIdType.NONE主键类型

IdType:

描述
AUTO数据库ID自增
NONE无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
INPUTinsert前自行set主键值
ASSIGN_ID分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)
ASSIGN_UUID分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法)
ID_WORKER分布式全局唯一ID 长整型类型(please use ASSIGN_ID)
UUID32位UUID字符串(please use ASSIGN_UUID)
ID_WORKER_STR分布式全局唯一ID 字符串类型(please use ASSIGN_ID)
  1. 将新加的UUID做主键的表实体对象中ID设置为ASSIGN_UUID即可:

    /**
     * <p>
     * 用户表设置
     * </p>
     *
     * @author zhangchao
     * @since 2020-03-02
     */
    @Data
    @TableName("Gy_User")
    public class GyUser implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        /**
         * 唯一标识ID
         */
        @TableId(value = "UUID",type = IdType.ASSIGN_UUID)
        private String uuid;
    
        /**
         * 用户编码
         */
        @TableField("UserCode")
        private String UserCode;
    }
    

另外,还可以自定义ID生成器。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PS: 更多技术干货,欢迎大家来我的个人博客 yak33的技术人生
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值