插入功能
//测试插入@Testpublic void testInsert(){
User user = new User(); user.setName("ironman"); user.setAge(3); user.setEmail("[email protected]"); System.out.println(user); System.out.println("======================"); System.out.println(userMapper.insert(user));//会自动生成id,并回填}
数据库默认插入的id为:全局的唯一id
主键生成策略
分布式系统唯一id生成:https://www.cnblogs.com/liujianping/p/10401842.html
雪花算法:
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。
主键自增
实体类字段上添加@TableId(type = IdType.AUTO)
数据库字段一定得是自增
这两个条件缺一不可,否则就会报错
再次插入实现自增
其余的源码解释
public enum IdType {
AUTO(0), //数据库id自增 NONE(1), //未设置主键 INPUT(2), //手动输入 ASSIGN_ID(3), ASSIGN_UUID(4), /** @deprecated */ @Deprecated ID_WORKER(3), //默认的全局唯一id /** @deprecated */ @Deprecated ID_WORKER_STR(3), //ID_WORKER字符串表示法 /** @deprecated */ @Deprecated UUID(4); //全局唯一id}
更新操作
//测试更新 @Test public void testUpdate(){
User user = new User(); //通过条件自动拼接动态SQL user.setId(1L);