首先先了解MyBatis-Plus的@TableId注解 :用于对应数据库表的实体类中的主键属性,如:

    1. public class User {
    2. @TableId(value = "id", type = IdType.ID_WORKER)
    3. private Long id;
    4. private String name;
    5. private String pwd;
    6. //构造器和getXxx、setXxx
    7. }

    其中value对应数据库主键字段名,type用于指定主键策略

    MyBatis-Plus有四种常见主键策略(注意版本不同名字、策略也不同)

    描述
    IdType.AUTO 数据库ID自增
    IdType.INPUT 用户手动输入ID
    IdType.ID_WORKER 全局唯一ID,内容为空自动填充(默认配置)
    IdType.UUID 全局唯一ID,内容为空自动填充

    它们由TableId注解的value属性指定,其中IdType.ID_WORKER是默认的策略,采用的是雪花算法。如果使用默认的主键策略,我们需要确保实体类的中主键对应的属性类型是Long,数据库的主键字段是BIGINT,否则会报类型不匹配的异常。如果采用AUTO,那么数据库主键字段必须设置为自增,UUID生成的主键是字符串,因此需要对应数据库字段为varchar或char;而INPUT则需要手动输入id,否则无法生成主键。

    测试:

    1. @SpringBootTest
    2. class ApplicationTests {
    3. @Autowired
    4. private UserMapper userMapper;
    5. @Test
    6. public void test() {
    7. User user=new User();
    8. user.setName("小阿狸");
    9. user.setPwd("1236987");
    10. userMapper.insert(user);
    11. }
    12. }

    image.png