重写mybatisplus 的ASSIGN_UUID,生成带中划线的id
时间: 2024-11-05 18:24:38 浏览: 36
MyBatisPlus 是一个基于 MyBatis 的代码生成工具,它提供了一些便捷的方法来简化数据库操作。如果想在插入数据时自动生成带有下划线的 UUID ID,可以重写 `BaseEntity` 中的 `assignID` 方法,利用 `UUID.randomUUID().toString().replace("-", "_")` 这样的方式生成。
首先,找到你在项目中使用的 `BaseEntity` 或者其继承自的通用实体类,例如 `GlobalMapper` 提供的 `BaseEntity`。然后,在这个类中加入如下代码:
```java
@Override
protected void assignID() {
this.id = UUID.randomUUID().toString().replace("-", "_"); // 生成新的 ID,替换掉 -
}
```
这将覆盖默认的 UUID 生成并将其转换为你需要的格式。记得在启用全局序列化设置 (`@TableId GlobalIdGenerator(idType = IdType.AUTO)` 或者相应的全局配置) 后,才能让这个方法生效。
相关问题
重写mybatisplus 的ASSIGN_UUID,生成带中划线的id,没有使用beseentity
在MyBatisPlus中,如果你想要自定义生成带有下划线的ID,而不是默认的UUID格式,通常需要通过自定义Mapper和实体类来实现。首先,你需要在实体类(如`User.java`)中添加一个字段表示你的自增ID:
```java
public class User {
@TableId(value = "id", type = IdType.AUTO)
private String customUniqueId; // 或者 Long类型,看你数据库是否支持字符串类型的主键
// 其他字段...
}
```
然后,在对应的Mapper文件(如`UserMapper.xml`)中,你可以创建一个自定义插入映射,手动设置这个字段的值:
```xml
<insert id="insertWithCustomUniqueId" parameterType="com.example.User">
INSERT INTO user (custom_unique_id) VALUES (#{customUniqueId})
</insert>
```
在Service层或者Repository中,你可以像操作普通实体一样使用这个自定义的插入方法:
```java
@Autowired
private UserMapper userMapper;
public void addUser(User user) {
user.setCustomUniqueId(IdWorker.getInstance().nextId()); // 使用自定义的ID生成工具
userMapper.insertWithCustomUniqueId(user);
}
```
在这个例子中,`IdWorker`是一个用于生成特定格式ID的工具类,你需要自己实现或者从其他库(如Snowflake等)引入。
mybatisplus 的ASSIGN_UUID,生成带中划线的id,springboot
MybatisPlus是一个基于MyBatis的持久层框架增强工具,它提供了一些方便的API和注解,可以简化数据映射操作。其中`ASSIGN_UUID`通常用于自动生成主键,当你希望数据库ID为UUID格式,且包含下划线分隔的字符串时,你可以使用这个特性。
当你在创建实体类并标注`@TableId(value = "id", type = IdType.AUTO)`(默认主键类型为雪花ID,如果需要UUID类型),然后使用`@TableField(fill = FieldFill.ASSIGN_UUID)`,MybatisPlus会在插入新记录时自动为该字段生成一个UUID格式的值。Spring Boot集成MybatisPlus时,只需要添加依赖并配置一下MybatisPlus的环境即可。
例如,在SpringBoot的启动类上加上@EnableGlobalConfiguration启用全局配置,并在application.properties文件中配置数据源:
```properties
mybatis-plus.global-config.sql-executor-type=MySQL
```
这样,每次保存对象到数据库时,对应的`id`字段就会自动设置为带有下划线的UUID了。
阅读全文