首页 > 其他分享 >MybatisPlus生成主键策略方法

MybatisPlus生成主键策略方法

时间:2022-10-16 17:11:51浏览次数:54  
标签:MybatisPlus String hutool 主键 生成 id 策略

MybatisPlus生成主键策略方法

全局id生成策略【因为是全局id所以不推荐】

SpringBoot集成Mybatis-Plus

在yaml配置文件中添加MP配置

mybatis-plus:
  global-config:
    db-config:
      #主键类型(auto:"自增id",assign_id:"全局唯一id(雪花算法,Long或者String类型)",
         assign_uuid:"全局唯一id(无中划线的uuid)",input:"自行设置id,默认null",none:"不设置主键id")
      id-type: assign_id

局部id生成策略【局部id非常推荐】

在实体类当中使用@TableId注解配置id生成类型

@TableId(type = IdType.AUTO)
private String id;

注意事项:

  • 同时配置了这两种策略时,局部字段的ID生成策略优先级高于全局的id生成策略

  • 使用雪花算法生成ID后,再次切换为主键自增的ID生成策略后会导致起始序列过大(没有重置起始序列值)

  • 另外如果原先指定了@TableId(type = IdType.AUTO),然后去除这部分代码,会发生Tuncate操作(即清空表并重置ID起始值)

如果大家没有用到MybaitsPlus,也可以用java自带的生成方法

这种自带的生成方法(里面会有-符号)

java.util.UUID.randomUUID().toString();

也可以用hutool中的生成方法,下面是以int类型为例子

int context = Math.abs(IdUtil.fastSimpleUUID().hashCode());

也可以用当前时间戳+随机id的形式生成唯一的,下面是以String类型为例子

Date date = new Date();
String context = DateUtil.format(date,"yyyyMMdd") +Math.abs(IdUtil.fastSimpleUUID().hashCode());

使用hutool需要导入依赖

<!--        Hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.19</version>
        </dependency>

当然这些只是我的建议,大家可以去找找其他的方法。
有知道其他方法的小伙伴们欢迎在底下留言,本人小白一枚轻喷!

标签:MybatisPlus,String,hutool,主键,生成,id,策略
From: https://www.cnblogs.com/b10100912/p/16796560.html

相关文章

  • 使用 Doxygen 从源代码生成 UML 类图
    Doxygen简介Doxygen是一个编写软件参考文档的工具,也是从带注释的C++源代码生成文档的事实上的标准工具。这意味着该文档是直接写在源代码中的,因此比较容易保持更新。Dox......
  • 系统分析师学习笔记(7)-最小生成树
    1。克鲁斯卡法-最短边a-选择最短边b.依次选择,保证无回路c.继续选择。2.普里娒算法-最近顶点a-首先选择一个顶点b-考虑已加入的顶点,选择一个最短边加入;c.重复上面的步骤,逐次......
  • C++ 实现随机数生成(Windows、Linux)
    1、简介计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意:小M多项式序列的周期是65535,即每次利用一个随机种子生......
  • gcc编译源码生成静态库和动态库
    函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才......
  • GAN初步-生成1010格式规律的向量
    GAN初步-生成1010格式规律的向量构建和训练GAN的推荐步骤:(1)从真实数据集预览数据;(2)测试鉴别器至少具备从随机噪声中区分真实数据的能力;(3)测试未经训练的生成器能否创建......
  • 生成订单30分钟未支付,则自动取消,该怎么实现?
    了解需求方案1:数据库轮询方案2:JDK的延迟队列方案3:时间轮算法方案4:redis缓存方案5:使用消息队列了解需求在开发中,往往会遇到一些关于延时任务的......
  • Simulation-计算统计-随机数生成
    library('ggplot2')library('dplyr')Lecture6MethodsforgeneratingrandomnumbersGoal:UseU(0,1)numberstogenerateobservations(variates)fromother......
  • MyBatisPlusConfig中配置分页插件以及分页案例
    1、MyBatisPlusConfig中配置分页插件依赖参考:https://www.cnblogs.com/konglxblog/p/16793936.htmlpackagecom.stu.service.base.config;importcom.baomidou.mybati......
  • django seed模型生成测试数据
     安装要安装djangoseed,请使用pip:pipinstalldjango-seed或从源安装:pythonsetup.pyinstall配置将其添加到settings.py:中已安装的应用程序中INSTALLED_A......
  • springboot MP代码生成器
    1、需要的依赖和版本号(我这个是项目完成后的全部依赖,只参照需要的依赖即可)<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0......