關於使用MyBatisPlus後id變一長串(雪花演算法)的踩坑

LiberHome發表於2023-01-12

我建的表是這樣的:

create table user
(
    id           bigint auto_increment comment 'id'
        primary key,
    username     varchar(256)                       null comment '使用者暱稱',
    userAccount  varchar(256)                       null comment '賬號',
    avatarUrl    varchar(1024)                      null comment '使用者頭像',
    gender       tinyint                            null comment '性別',
    userPassword varchar(512)                       not null comment '密碼',
    phone        varchar(128)                       null comment '電話',
    email        varchar(512)                       null comment '郵箱',
    userStatus   int      default 0                 not null comment '使用者轉態 0 正常',
    createTime   datetime default CURRENT_TIMESTAMP null comment '建立時間',
    updateTime   datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新時間',
    isDelete     tinyint  default 0                 null invisible comment '是否邏輯刪除 預設0'
)
    comment '使用者';

可以看到我的id是bigint 自增,但自測的時候:

@SpringBootTest
class UserServiceTest {

    @Resource
    private UserService userService;

    @Test
    void testAdduser() {
        User user = new User();
        user.setUsername("leoleo");
        user.setUserAccount("leoleoleo");
        user.setAvatarUrl("https://avatar-static.segmentfault.com/274/037/2740371703-61baf9dec42e4_huge256");
        user.setGender(0);
        user.setUserPassword("12345678");
        user.setPhone("123");
        user.setEmail("456");
        boolean res = userService.save(user);
        System.out.println(user.getId());
        Assertions.assertTrue(res);
    }

發現資料庫中的資料是這樣的:

我的id變成了161343xxxxxx一長串,,我回去看我的建表語句確實沒問題,之前沒用MyBatisPlus也正常,那麼問題出在MyBatisPlus上,回到MyBatisPlus官方文件一查,果然,MyBatisPlus預設是用的雪花演算法實現也就是下圖中的ASSIGN_ID,如果不想用雪花演算法在yml配置檔案中加上一句

mybatis-plus:
  configuration:
    db-config:
      id-type: auto

就行了。


參考 MyBatisPlus官方文件 https://baomidou.com/pages/22...

相關文章