欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis-plus设置id自增,插入数据。

程序员文章站 2024-01-09 18:33:16
...

mybatis-plus设置id自增,插入数据

没修改前

  1. 这是我的实体类。
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    public class Company {
      private Integer id;
      private String cid;
      private String cname;
      private String address;
      private String representation;
      private String phone;
      private String email;
      private String weburl;
      private String introductory;
    }
    
  2. 我的数据库设置的是id自增。 添加数据时没有加上id的数据。然后报错
    Closing non transactional SqlSession [[email protected]]
    Creating a new SqlSession
    SqlSession [[email protected]] was not registered for synchronization because synchronization is not active
    Closing non transactional SqlSession [[email protected]]
    2021-11-07 14:28:06.789 ERROR 5620 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.dk.pojo.Company' with value '1457233381002637313' Cause: java.lang.IllegalArgumentException: argument type mismatch] with root cause
    
  3. 查询得知,当时实体中,plus主键生成方式不设置生成方式时,默认的是自增。而且生成的值就如报错中的‘1457233381002637313’很长的一个值。而主键的设置类型有:
    AUTO(0, “数据库ID自增”),
    INPUT(1, “用户输入ID”),
    ID_WORKER(2, “全局唯一ID”),
    UUID(3, “全局唯一ID”),
    NONE(4, “该类型为未设置主键类型”),
    ID_WORKER_STR(5, “字符串全局唯一ID”);
    所以修改后:
    第一次;
    @TableId( type = IdType.AUTO)
    private Integer id;
    这样的修改跟修改前一样。我们需要的是12、13这样的序列,所以需要设置id生成方式,就需要在注解设置value的值。
    @TableId(value = “id”, type = IdType.AUTO)
    private Integer id;
    这样指定id的值,我们在用plus插件insert时就不用插入id的值。生成的id值跟数据库对应。