mybatis-plus设置id自增,插入数据。
程序员文章站
2024-01-09 18:33:16
...
mybatis-plus设置id自增,插入数据
没修改前
- 这是我的实体类。
@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; }
- 我的数据库设置的是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
- 查询得知,当时实体中,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值跟数据库对应。
上一篇: [email protected] 注解的作用与用法
下一篇: KNN算法简单应用