mybatis plus 主键策略

简介: mybatis plus 主键策略

博主原创,转载请注明出处: 

  mybatis plus 对实体类映射表的主键做了注解支持,该注解为 @TableId ,如果不使用该注解,mybatis plus 默认主键生成的策略是内部封装的雪花算法。

  @TableId 注解定义的代码如下:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface TableId {
    String value() default "";
    IdType type() default IdType.NONE;
}

 

其中 type 为 id 生成的策略类型,其支持的 id 生成策略如下:

public enum IdType {
    AUTO(0),    // 数据库id自增
    NONE(1),     // 未设置主键
    INPUT(2),    // 手动输入
    ID_WORKER(3),     // 只有当插入对象ID 为空,才自动填充,默认的方式,全局唯一id
    UUID(4),      // 只有当插入对象ID 为空,才自动填充,全局唯一id uuid
    ID_WORKER_STR(5);    //只有当插入对象ID 为空,才自动填充,ID_WORKER 字符串表示法
    private final int key;
    private IdType(int key) {
        this.key = key;
    }
    public int getKey() {
        return this.key;
    }
}

 

  项目中可进行 test 测试,项目框架的搭建以及实体类,测试类的封装可以看上一篇文章:

搭建 spring boot + mybatis plus 项目框架并进行调试

  实体类对 id 不添加 @TableId的注解:

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL COMMENT '主键ID',
  `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


@Data
@Table(name = "user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private int age;
    private String email;
}

测试test为:

@Test
    void save() {
        User user = new User();
        user.setAge(23);
        user.setEmail("344");
        user.setName("test");
        userService.save(user);
        log.error("------------------{}", JSON.toJSONString(user));
    }

插入数据库的数据如下:

{"age":23,"email":"344","id":1352980660057944066,"name":"test"}

这里生成 id 是有mybatis plus 封装的 IdWorker 的泪生成。

 

如果项目中有需要uuid 也可以直接使用其中的方法进行直接获取。

 

 

2.设置 id 为自增长类型:

  修改数据库表id为主键自增长:

 

继续使用之前的test进行添加测试:

打印的添加成功的数据为:

{"age":23,"email":"344","id":1352980660057944067,"name":"test"}

 

 


 

标签: mybatis plus

目录
相关文章
|
1月前
|
前端开发 JavaScript Java
技术分享:使用Spring Boot3.3与MyBatis-Plus联合实现多层次树结构的异步加载策略
在现代Web开发中,处理多层次树形结构数据是一项常见且重要的任务。这些结构广泛应用于分类管理、组织结构、权限管理等场景。为了提升用户体验和系统性能,采用异步加载策略来动态加载树形结构的各个层级变得尤为重要。本文将详细介绍如何使用Spring Boot3.3与MyBatis-Plus联合实现这一功能。
93 2
|
3月前
|
Java 数据库连接 测试技术
mybatis plus 获取新增实体的主键
mybatis plus 获取新增实体的主键
110 8
|
3月前
|
Java 数据库连接 数据库
mybatis plus 更新值为null的字段
mybatis plus 更新值为null的字段
53 7
|
3月前
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
77 4
|
3月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
74 3
|
3月前
|
Java 数据库连接 数据库
mybatis plus 中增删改查及Wrapper的使用
mybatis plus 中增删改查及Wrapper的使用
147 3
|
3月前
|
Oracle 关系型数据库 Java
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
|
4月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
63 2
|
5月前
|
算法 BI 数据库
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
318 3
|
4月前
|
SQL Java 数据库连接
Mybatis Plus入门
Mybatis Plus入门