一、mybatis-plus的数据添加
项目是连用Mybatis-Plus的使用 1里面的项目
1、使用自动设置的19位字符串作为id(使用雪花算法自动生成)
1.1测试类(自动生成的方法insert())
@Test
public void testAdd(){
User user = new User();
user.setUsername("西沟");
user.setPassword("484848");
userMapper.insert(user);
}
如果这样直接添加的话,就会出错。原因是这个自动生成的方法给我们的id生成一个19位的字符串,所以运行时出错,而且要在对象中声明谁是主键,要不然也会报错。
所以,我们要对数据库以及User里面的id对象进行修改。
1.2.User实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@TableId(type = IdType.ID_WORKER_STR)
//这个注解就是表明id为主键,而且类型是19位的字符串
private String id;
private String username;
private String password;
}
1.3 效果:
2、使用19位的数字作为主键(不建议使用)
因为Vue中的number类型只有17位,如果这时将数据传给前端的的话,会把自动把id截掉一部分。
2.1测试类(不变)
2.2User实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
@TableId(type = IdType.ID_WORKER)
//这个注解就是表明id为主键,而且类型是19位的数字
private Long id;
private String username;
private String password;
}
2.3修改数据库
2.4效果(记得把之前的数据删除)
3、使用UUID作为主键
3.1.测试类不变
3.2.User实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
//@TableId(type = IdType.ID_WORKER)//这个注解就是表明id为主键,而且类型是19位的数字
@TableId(type = IdType.UUID)
//类型是UUID
private String id;
private String username;
private String password;
}
3.3.修改数据库(可以把之前数据库的数据删掉)
3.4.效果
4、使用自增长来作为主键
4.1.测试类不变
4.2.User实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
//@TableId(type = IdType.ID_WORKER)//这个注解就是表明id为主键,而且类型是19位的数字
//@TableId(type = IdType.UUID)//类型是UUID
@TableId(type = IdType.AUTO)
private Integer id;
private String username;
private String password;
}
4.3.修改数据库(把之前的数据删掉)
4.4.效果
5、自己输入主键
5.1.测试类
@Test
public void testAdd(){
User user = new User();
user.setId(111);
user.setUsername("西沟");
user.setPassword("484848");
userMapper.insert(user);
}
5.2.User实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
//@TableId(type = IdType.ID_WORKER_STR) //这个注解就是表明id为主键,而且类型是19位的字符串
//@TableId(type = IdType.ID_WORKER)//这个注解就是表明id为主键,而且类型是19位的数字
//@TableId(type = IdType.UUID)//类型是UUID
//@TableId(type = IdType.AUTO)//自动递增
@TableId(type = IdType.INPUT)
//@TableId(type = IdType.NONE)这个也是相同的效果
private Integer id;
private String username;
private String password;
}
5.3 修改数据库(取消id自动递增)
5.4 效果
以上是我自己的见解,如果知识点有误,还望告知。多多点赞,你们的点赞就是我继续创作的动力,谢谢!