目录
一、AUTO策略
二、INPUT策略
id生成策略
新增成功后,注解ID是一个很长串的内容,我们更想按照数据库表字段进行自增长。
不同的表应用不同的id生成策略
日志:自增(1、2、3、4、......)
购物订单:特殊规则(PQ23534AJ4398)
外卖单:关联地区日期等信息(10 04 20220405 23 14)
关系表:可省略id
......
不同的业务采用的ID生成方式应该是不一样的,那么在MP中就需要用到一个注解@TableId
名称 | @TableId |
类型 | 属性注解 |
位置 | 模型类中用于表示主键的属性定义上方 |
作用 | 设置当前类中主键属性的生成策略 |
相关属性 | value(默认):设置数据表主键名称 type:设置注解属性的生成策略,值查照IdType的枚举值 |
一、AUTO策略
代码演示
1、设置生成策略为AUTO
@Data
@TableName("tbl_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
@TableField(value="pwd",select=false)
private String password;
private Integer age;
private String tel;
@TableField(exist=false) p
rivate Integer online;
}
2、删除测试数据并修改自增值
因为之前生成的ID值比较长,会把MySQL的自动增长的值变的很大,所以需要将其调整为目前最小的id值
3、运行新增方法
会发现,新增成功,并且按照注解id自增
AUTO的作用是使用数据库ID自增,在使用该策略的时候一定要确保对应的数据表设置了ID主键自增,否则无效。
二、INPUT策略
1、设置生成策略为INPUT
@Data
@TableName("tbl_user")
public class User {
@TableId(type = IdType.INPUT)
private Long id;
private String name;
@TableField(value="pwd",select=false)
private String password;
private Integer age;
private String tel;
@TableField(exist=false)
private Integer online;
}
注意:这种ID生成策略,需要将表的自增策略删除掉
2、添加数据手动设置ID
@SpringBootTest
class Mybatisplus03DqlApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testSave(){
User user = new User();
//设置主键ID的值
user.setId(666L);
user.setName("夏志121");
user.setPassword("ttjbyd");
user.setAge(12);
user.setTel("4006184000");
userDao.insert(user);
}
}
3、运行新增方法
如果没有设置主键ID的值,则会报错,错误提示就是主键ID没有给值
如果设置了主键ID,则数据就能添加成功。