CRUD扩展
插入操作
Insert 插入
//测试插入
@Test
public void testInsert() {
User user = new User();
user.setName("itheibai");
user.setAge(2);
user.setEmail("123456789@qq.com");
int result = userMapper.insert(user); // 帮我们自动生成id
System.out.println(result); // 受影响的行数
System.out.println(user); // 发现,id会自动回填
}

数据库插入的id的默认值为:全局的唯一id
主键生成策略
默认 ID_WORKER 全局唯一id
分布式系统唯一id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html
雪花算法:
snowflflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全球唯 一!
主键自增
我们需要配置主键自增:
1、实体类字段上
@TableId(type = IdType.AUTO)
2、数据库字段一定要是自增!

3、再次测试插入即可!
其余的源码解释
public enum IdType {
AUTO(0), // 数据库id自增
NONE(1), // 未设置主键
INPUT(2), // 手动输入
ASSIGN_ID(3), // 分配默认的全局唯一id
ASSIGN_UUID(4); // 分配全局唯一id uuid
}
更新操作
//测试更新
@Test
public void testUpdate() {
User user = new User();
// 通过条件自动拼接动态sql
user.setId(5L);
user.setName("itheibai");
user.setAge(18);
// 注意:updateById 参数是一个 对象!
int i = userMapper.updateById(user);
System.out.println(i);
}

所有的sql都是自动帮你动态配置的!
评论前必须登录!
注册