ID值是從哪里得到的?
CREATE TABLE user (
? ? id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主鍵',
? ? name VARCHAR(30) DEFAULT NULL COMMENT '姓名',
? ? age INT(11) DEFAULT NULL COMMENT '年齡',
? ? email VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
? ? manager_id BIGINT(20) DEFAULT NULL COMMENT '直屬上級id',
? ? create_time DATETIME DEFAULT NULL COMMENT '創建時間',
? ? CONSTRAINT manager_fk FOREIGN KEY (manager_id)
? ? ? ? REFERENCES user (id)
)? ENGINE=INNODB CHARSET=UTF8;
老師,有個疑問,在定義表結構時沒有指定id為自增長,當執行
@Test public?void?insert()?{ ????User?user?=?new?User(); ????user.setName("張三"); ????user.setAge(20); ????user.setManagerId(1088248166370832385L); ????user.setCreateTime(LocalDateTime.now()); ????int?rows?=?userMapper.insert(user); ????System.out.println("影響記錄數:"?+?rows); }
執行插入數據代碼后,1134646077845229570這個id值是從哪里來的?
DEBUG==>? Preparing: INSERT INTO user ( id, name, age, manager_id, create_time ) VALUES ( ?, ?, ?, ?, ? )?
DEBUG==> Parameters: 1134646077845229570(Long), 張三(String), 20(Integer), 1088248166370832385(Long), 2019-06-01 10:21:20.15(Timestamp)
DEBUG<==? ? Updates: 1
影響記錄數:1
2019-06-01
? ? ? ?同學,如果自己沒有配置主鍵策略,MP的默認主鍵策略是基于雪花算法的自增主鍵。在MP的源碼中有雪花算法的實現代碼。1134646077845229570這個值是MP框架通過代碼調用計算出來的值。
2019-12-08
我這個沒設置主鍵策略啊,MP也沒管我啊,Junit直接報錯了,怎么解決啊