@TableId的使用

@TableId的value属性

@TableId的type属性

 

通过全局配置配置主键生成策略

 

 

 

 

进行插入操作

@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;
}

 

 

 

 

 

 

 

 

 

 

 

@TableId的value属性

value属性用于指定主键的字段

 

 首先这里的t_user表的主键名字不是“id”,所以需要用到@TableId注解

其次字段uid不对应实体类的id属性,所以需要用到@TableId的value属性

 

 

 

 

 

 

@TableId的type属性

 

 

 

 

如果设置了雪花算法,就算数据库中设置了自动递增,也会采用雪花算法

如果使用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属性,这样一来,前面设置的自动分配机制就失去了作用

 

 

 

结果:

 

posted on 2022-05-24 18:15  西凉#  阅读(1344)  评论(0编辑  收藏  举报