首先先了解MyBatis-Plus的@TableId注解 :用于对应数据库表的实体类中的主键属性,如:
public class User {@TableId(value = "id", type = IdType.ID_WORKER)private Long id;private String name;private String pwd;//构造器和getXxx、setXxx}
其中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,否则无法生成主键。
测试:
@SpringBootTestclass ApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void test() {User user=new User();user.setName("小阿狸");user.setPwd("1236987");userMapper.insert(user);}}

