mybatis-plus id生成器
时间: 2023-07-11 17:54:15 浏览: 173
Mybatis-Plus提供了三种ID生成策略,分别是:
1. UUID:即java.util.UUID,32位不重复字符串,使用JDK自带的UUID算法生成,性能较低。
2. ID_WORKER:Long类型的ID,使用Twitter的Snowflake算法生成,性能较高,但不支持高并发。
3. ID_WORKER_STR:String类型的ID,使用Twitter的Snowflake算法生成,性能较高,支持高并发。
其中,ID_WORKER和ID_WORKER_STR的生成策略是基于Twitter的Snowflake算法实现的,可以满足大部分业务需求的ID生成要求。如果需要自定义ID生成策略,可以实现IdentifierGenerator接口并在实体类中使用@TableId注解指定使用的ID生成策略。
相关问题
实现mybatis-plus id生成器
要实现Mybatis-Plus的ID生成器,可以按照以下步骤进行操作:
1. 创建一个实现IdentifierGenerator接口的类,例如MyIdGenerator:
```
public class MyIdGenerator implements IdentifierGenerator {
@Override
public Serializable nextId(Object entity) {
// TODO: 生成ID的逻辑
return null;
}
}
```
2. 在实体类中使用@TableId注解指定使用MyIdGenerator生成ID:
```
public class MyEntity {
@TableId(type = IdType.ASSIGN_ID, generator = "myIdGenerator")
private Long id;
// ...
}
```
3. 在Mybatis的配置文件中配置MyIdGenerator:
```
<bean id="myIdGenerator" class="com.example.MyIdGenerator"/>
```
注意,如果使用的是Spring Boot,可以在配置文件中配置MyIdGenerator:
```
mybatis-plus:
global-config:
db-config:
id-type: ASSIGN_ID
id-generator: com.example.MyIdGenerator
```
其中,id-type指定ID生成策略为ASSIGN_ID,id-generator指定使用MyIdGenerator生成ID。
4. 最后,在MyIdGenerator中实现nextId方法,根据业务需求生成ID即可。例如,可以使用UUID生成32位字符串作为ID:
```
public class MyIdGenerator implements IdentifierGenerator {
@Override
public Serializable nextId(Object entity) {
return UUID.randomUUID().toString().replace("-", "");
}
}
```
这样就完成了Mybatis-Plus的ID生成器的实现。
mybatis-plus id 生成策略
Mybatis-Plus提供了多种ID生成策略,具体如下:
1. 默认使用雪花算法生成全局唯一ID,可通过`IdType.ASSIGN_ID`指定。
2. 使用数据库自增ID,可通过`IdType.AUTO`指定。
3. 使用UUID,可通过`IdType.UUID`指定。
4. 使用雪花算法生成字符串格式的ID,可通过`IdType.ASSIGN_ID`和`@TableId(type = IdType.ASSIGN_ID, value = "id", length = 20)`指定。
5. 使用雪花算法生成固定长度的ID,可通过`IdType.ASSIGN_ID`和`@TableId(type = IdType.ASSIGN_ID, value = "id", length = 19)`指定。
6. 使用自定义的ID生成器,需要实现`IdentifierGenerator`接口,并在实体类中使用`@TableId(type = IdType.ASSIGN_ID, value = "id", typeHandler = MyIdentifierGenerator.class)`指定。
其中,`typeHandler`指定了自定义ID生成器的类型处理器。
阅读全文