CMIPT/gcs-back-end

修复数据库主键与 MyBatis-Plus 兼容问题

Closed this issue · 0 comments

通过测试后发现,如果在 MyBatis-Plus 中设置了主键字段的类型为 auto (自增主键),由于数据库在创建的时候设置了 pk_user_id bigint DEFAULT nextval('public.users_id_seq'::regclass) NOT NULL 这会导致使用 mybatis-plus 的脚本进行插入的时候 id 会以步长 2 进行自增 (0, 2, 4, ...) 如下图所示:

image

因此需要删除创建表中对应的默认值部分。

此外,阿里巴巴 java 中的规范提到 主键索引名为pk_字段名 因此,应该在创建约束的部分对索引进行以 pk_ 开头的命名,而不是在创建表的时候进行如此的命名,表中的主键字段名称全部更改为 id

对于唯一索引 (all_column_contraint.sql 中):

ALTER TABLE ONLY public.t_user 
ADD CONSTRAINT users_email_key UNIQUE (email);

ALTER TABLE ONLY public.t_user 
ADD CONSTRAINT users_username_key UNIQUE (username);

由于使用了逻辑删除,所以当一个用户进行了注销操作后,真正的数据不会被删除,当这个用户重新进行注册的时候,由于唯一索引的存在会导致之前的注册邮箱无法使用,因此目前建议直接删除唯一索引。

另外发现 sql 脚本中有很多的行末空格,应该删除不必要的行末空格。