重写mybatisPlus自定义ID生成策略

1.项目中需要引入mybatisplus核心组件

XML 复制代码
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mp.version}</version>
            </dependency>

2.新建一个类实现IdentifierGenerator,重写id生成策略

java 复制代码
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;

import java.util.UUID;


public class CustomUUIDGenerator implements IdentifierGenerator {

    
    @Override
    public boolean assignId(Object idValue) {
        return IdentifierGenerator.super.assignId(idValue);
    }

    //重写雪花id算法
    @Override
    public Number nextId(Object entity) {
        return SequenceUtil.makeId();
    }

    //重写uuid算法,不过滤-
    @Override
    public String nextUUID(Object entity) {
        return UUID.randomUUID().toString();
    }
}

3.在mybatisplus配置文件中注入bean

java 复制代码
@Configuration
public class MybatisPlusConfig {

    @Bean
    public IdentifierGenerator identifierGenerator() {
        return new CustomUUIDGenerator();
    }


}

4.在实体bean映射类中使用需要在ID字段上加入注解

ASSIGN_UUID即为重写后生成的UUID,原生成的uuid为32位,没有-连接符,id需要使用String类型

复制代码
@TableId(value = "id", type = IdType.ASSIGN_UUID)
复制代码
ASSIGN_ID即为重写后生成的雪花id,值为Long类型
复制代码
@TableId(value = "workspaceid", type = IdType.ASSIGN_ID)

此方法为重写覆盖原生mybatisplus,所以不影响其他地方,id依然会在insert时自动生成.

相关推荐
程序员小凯19 分钟前
Spring Boot文件处理与存储详解
java·spring boot·后端
Miraitowa_cheems1 小时前
LeetCode算法日记 - Day 88: 环绕字符串中唯一的子字符串
java·数据结构·算法·leetcode·深度优先·动态规划
黑云压城After2 小时前
vue2实现图片自定义裁剪功能(uniapp)
java·前端·javascript
zcl_19913 小时前
记一次ThreadLocal导致的生产事故
java
RoboWizard3 小时前
怎么判断我的电脑是否支持PCIe 5.0 SSD?Kingston FURY Renegade G5
java·spring·智能手机·电脑·金士顿
毕设源码-钟学长4 小时前
【开题答辩全过程】以 儿童游泳预约系统为例,包含答辩的问题和答案
java·eclipse
皮皮林5514 小时前
5种接口频率监控方案实战对比,性能、成本、复杂度全解析!
java
似水流年 光阴已逝4 小时前
从Jar包到K8s上线:全流程拆解+高可用实战
java·kubernetes·jar
YA3335 小时前
java设计模式八、组合模式
java·设计模式·组合模式
一枚码仔5 小时前
SpringBoot启动时执行自定义内容的5种方法
java·spring boot·后端