项目文件看前面文章,
插入数据
/*
插入一条记录
insert
@param entity 实体对象
*/
@Test
public void testInsert(){
User user =new User();
user.setUserName("程程");
user.setName("chengcheng");
user.setPassWord("123456");
/* 插入时间格式数据
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy‐MM‐dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse("1990‐01‐01 00:00:00", df);
user.setBirthday(localDateTime);
*/
user.setBirthday("1991-01-01");
user.setAge(34);
user.setEmail("152415@it.com");
int result = userMapper.insert(user); //返回的result是受影响的行数,并不是自增后的id
System.out.println("result = " + result);
System.out.println(user.getId()); //自增后的id会回填到对象中
/*
result = 1
1367412631087063041
*/
}
主键生成策略
在实体类User中设置id的生成策略
- 自增策略
mysql数据库主键为自增
不用设置主键,setId输入的无效
@TableId(value = "id",type = IdType.AUTO) //指定主键字段名
private Long id;
- 手动输入
mysql数据库主键为自增增或不是自增都可以
必须设置主键setId,否则运行报错
@TableId(value = "id",type = IdType.INPUT) //指定主键字段名
private Long id;
- UUID
生成全局唯一ID。
mysql数据库主键为字符串类型,不是自增类型。
不用设置主键setId
@TableId(value = "id",type = IdType.UUID) //指定主键字段名
private String id;
- ID_WORKER_STR
采用雪花片算法(雪花算法生成的ID是纯数字且具有时间顺序,适合分布式场景)生成全局唯一ID,字符串类型。
mysql数据库主键为字符串类型,不是自增类型。
@TableId(value = "id",type = IdType.ID_WORKER_STR) //指定主键字段名
private String id;
- ID_WORKER
采用雪花片算法生成全局唯一ID,数值类型。
mysql数据库主键为数值类型,不是自增类型。
@TableId(value = "id",type = IdType.ID_WORKER) //指定主键字段名
private Long id;
更新数据