首页 > 其他分享 >mybatis plus 主键策略

mybatis plus 主键策略

时间:2023-02-21 11:33:29浏览次数:28  
标签:id private ID test plus user mybatis 主键

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

  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 的泪生成。

 

mybatis plus 主键策略_实体类

 

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

 

 

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

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

mybatis plus 主键策略_封装_02

 

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

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

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

 

 

  

 



标签:id,private,ID,test,plus,user,mybatis,主键
From: https://blog.51cto.com/u_15535797/6076392

相关文章

  • mybatis plus 中增删改查及Wrapper的使用
    本文为博主原创,未经允许不得转载:mybatisplus 通过封装 baseMapper 以及 ServiceImpl,实现对数据库的增删改查操作,baseMapper 是我们通常所说的dao层或mapper......
  • 搭建 spring boot + mybatis plus 项目框架并进行调试
    本文为博主原创,未经允许不得转载:1.创建一个spring boot的工程应用:File---->New----->Project----> 然后选中SpringInitializr 继续创建:  2.添加sprin......
  • mybatis配置文件resultMap标签的使用
    本文为博主原创,未经允许不得转载:      resultMap标签是为了映射select查询出来结果的集合,其主要作用是将实体类中的字段与数据库表中的字段进行关联映射。    ......
  • mybatis中mysql转义讲解
    本文为博主原创,未经允许不得转载:     在mybatis中写sql的时候,遇到特殊字符在加载解析的时候,会进行转义,所以在mybatis中写sql语句的时候,遇到特殊字符进行转义处理。 ......
  • Mybatis
    1、Mybatis简介1.1、什么是MyBatisMyBatis是一款优秀的持久层框架MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程MyBatis可以使用简单的X......
  • 基于 springboot + mybatis-plus + MySQL 重构过去一个项目的踩坑总结(持续更新)
    ①使用mybatis-plus时,如果根据某个条件查询没有查到数据,那么返回的实体类是null,如果使用get方法就会导致空指针异常,这点要规避②如果Map初始化在循环体外,那么在循......
  • MyBatis plus 代码生成器
    导入依赖<!--代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version>......
  • SpringBoot04 - 整合MyBatis
    整合MyBatis​ 整合完JUnit下面再来说一下整合MyBatis,这个技术是大部分公司都要使用的技术,务必掌握。如果对Spring整合MyBatis不熟悉的小伙伴好好复习一下,下面列举出原始......
  • MyBatis-RedisCache源码分析
    回顾在前面,我们通过redis​集成了MyBatis​的二级缓存,440.MyBatis的二级缓存整合redis,接下来,我们来分析一下RedisCache​的源码。源码分析RedisCache主要是通过......
  • mybatis
    mybatis3增加注解@SelectProvidermybatis3中增加了使用注解来配置Mapper的新特性,其中@Provider的使用方式较为复杂。@provide主要分为四种:@InsertProvider@DeletePro......