进行插入操作
@Test public void test(){ User user = new User(); user.setName("张三"); user.setAge(23); user.setEmail("Zhangsan@163.com"); int result = userMapper.insert(user); System.out.println(result); }
结果是通过雪花算法自动填充id并插入记录
当表的主键名称不为 "id"的时候,需要使用@TableId注解:
如果把实体类的id改为uid,表中的id列改为uid
进行插入操作以后,会出现报错
原因:因为MP默认认为id是主键列,其他名字的属性MP无法默认自动填充
- 解决方案:为主键列添加 @TableId 注解
@Data @TableName("t_user") public class User { @TableId private Long uid; private String name; private Integer age; private String email; }
value属性用于指定主键的字段
首先这里的t_user表的主键名字不是“id”,所以需要用到@TableId注解
其次字段uid不对应实体类的id属性,所以需要用到@TableId的value属性
如果设置了雪花算法,就算数据库中设置了自动递增,也会采用雪花算法
如果使用IdType.AUTO,数据库里的主键必须设置为自动递增才有有效,否则直接报错。
@Test public void test(){ User user = new User(); user.setId(100L); user.setName("张三三"); user.setAge(23); user.setEmail("Zhangsan@163.com"); int result = userMapper.insert(user); System.out.println(result); }
如上,已经为user对象分配了id属性,这样一来,前面设置的自动分配机制就失去了作用
结果: