为了账号安全,请及时绑定邮箱和手机立即绑定

mysql自增字段与主键问题

mysql添加了一个自增主键id,但是在生成的实体类中我不想用id作为默认主键,我想用字段userid为主键,包括用到的查询getById等都是用userid进行查询,需要怎样设置才行?目前用mybatis-plus generator自动生成的实体如下:

@ApiModelProperty(value = "ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;

@ApiModelProperty(value = "用户ID")
@TableField("UserID")
private String UserID;


正在回答

1 回答

不太理解你为什么要这么做,你把@TableId设置到UserID上,主键策略设置为

type = IdType.INPUT 该类型主键表示新增时由你自己插入主键
0 回复 有任何疑惑可以回复我~
#1

老猿

你试试,这样做应该可以实现你说的功能,就相当于欺骗MP,让MP误以为UserID是主键。但我从来没见过这么干的,不知道会不会有问题,我本人也不建议你这样做。
2019-09-22 回复 有任何疑惑可以回复我~
#2

qq_慕瓜5297292 提问者 回复 老猿

因为在mysql数据中添加了自增id,这个自增id没有实际意义,而自增id必须设置为主键,而MP生成的时候会自动把id生成为主键,但是实际用于查询时这个id只是一个自增,没法用于实际查询,而实际主键应该是UserID,mysql即使设置成双主键,mp也会默认生成一个id为@TableId的主键,感觉需要mp生成时能指定userid为主键才行
2019-09-23 回复 有任何疑惑可以回复我~
#3

老猿 回复 qq_慕瓜5297292 提问者

如果你把userid在数据库中指定为主键,mp的代码生成器给你建立实体类时是可以识别出来的。还有自增的字段不是必须为主键,mysql一个表中只可以有一个自增字段,数字类型的字段只要设置上唯一索引,就可以设置上自增。
2019-09-23 回复 有任何疑惑可以回复我~
#4

qq_慕瓜5297292 提问者 回复 老猿

是的,谢谢,学习了
2019-09-24 回复 有任何疑惑可以回复我~
#5

老猿 回复 qq_慕瓜5297292 提问者

不客气,嘿嘿。
2019-09-24 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

mysql自增字段与主键问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信