1、问题描述由于我在数据库的一张表设置了两个主键,所以创建的实体我想都加上@TableId注解
但是这样在mybatis-plus中一个实体只能有一个@TableId注解标识的主键
2、然后我在批量插入时就遇到了问题,我使用的saveBatch方法进行的批量插入,在插入时实体的两个id我都设置值了,
但是唯独设置@TableId注解的id在插入时无法进行插入
# 就执行了下面的sql语句
INSERT INTO hu_article_tag (tag_id ) VALUES ( ? )
3、最后我发现了问题的所在,原因是我的主键id原本设置了自增,所以我在插入实体时无法插入设置的主键id的值
4、解决方法就是@TableId(type = IdType.INPUT) 在这个注解加入IdType.INPUT类型即可完美解决
IdType.INPUT:该枚举类型表示插入数据时需要手动输入主键值。换句话说,当使用该枚举类型时,插入操作并不会生成主键值,需要手动指定主键值才能进行插入操作。
IdType.AUTO:该枚举类型表示插入数据时主键值会自增长。当使用该枚举类型时,插入操作会自动生成主键值,无需手动指定主键值即可进行插入操作。
因此,根据实际需要选择不同的主键自增长策略即可。如果希望手动指定主键值,则可以选择IdType.INPUT;如果希望主键自增长,则可以选择IdType.AUTO。
标签:IdType,插入,saveBatch,id,插入方法,键值,mybatis,INPUT,主键 From: https://www.cnblogs.com/huxiaoan1/p/17456288.html时间:2023-06-04