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 '直屬上級(jí)id',
? ? create_time DATETIME DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
? ? CONSTRAINT manager_fk FOREIGN KEY (manager_id)
? ? ? ? REFERENCES user (id)
)? ENGINE=INNODB CHARSET=UTF8;
老師,有個(gè)疑問(wèn),在定義表結(jié)構(gòu)時(shí)沒(méi)有指定id為自增長(zhǎng),當(dāng)執(zhí)行
@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("影響記錄數(shù):"?+?rows); }
執(zhí)行插入數(shù)據(jù)代碼后,1134646077845229570這個(gè)id值是從哪里來(lái)的?
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
影響記錄數(shù):1
2019-06-01
? ? ? ?同學(xué),如果自己沒(méi)有配置主鍵策略,MP的默認(rèn)主鍵策略是基于雪花算法的自增主鍵。在MP的源碼中有雪花算法的實(shí)現(xiàn)代碼。1134646077845229570這個(gè)值是MP框架通過(guò)代碼調(diào)用計(jì)算出來(lái)的值。
2019-12-08
我這個(gè)沒(méi)設(shè)置主鍵策略啊,MP也沒(méi)管我啊,Junit直接報(bào)錯(cuò)了,怎么解決啊