配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
?开启日志配置后,可以显示自动装配的代码:
测试插入
1. 封装
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
?2. 编写测试代码
@Test
public void testInsert(){
User user = new User();
user.setName("左小妹");
user.setAge(18);
user.setEmail("123@123.com");
int insert1= userMapper.insert(user);//自动生成id
System.out.println(insert1);//受影响的行数
System.out.println(user);//发现id会自动回填
}
?3. 运行结果
?数据库插入的数据是全局的唯一id
主键生成策略
默认ID_WORKER全局唯一ID
分布式系统唯一id生成
雪花算法:snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是∶使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个IlD),最后还有一个符号位,永远是0。可以保证几乎全球唯一。
主键自增
1. 实体类字段上:
2. 数据库字段一定要是自增!
?其它的源码解释
?
public enum IdType {
AUTO(0),//数据库id自增
NONE(1),//未设置主键
INPUT(2),//手动输入,必须自己配置id
ASSIGN_ID(3),
ASSIGN_UUID(4);//全局唯一id UUID
private final int key;
private IdType(int key) {
this.key = key;
}
public int getKey() {
return this.key;
}
}
|