mybatis-plus实体类主键策略有3种(小结)
mybatisplus实体类主键策略有3种(注解>全局>默认)
当IdType的类型为ID_WORKER、ID_WORKER_STR或者UUID时,主键由MyBatisPlus的IdWorker类生成,idWorker中调用了分布式唯一ID生成器-Sequence
1.注解方式
@TableId(type=IdType.AUTO)在实体类增加注解即可
@TableName("t_article")
publicclassTArticleextendsModel{
privatestaticfinallongserialVersionUID=1L;
/**
*id
*/
@TableId(type=IdType.AUTO)
privateLongid;
/**
*正文
*/
privateStringarticle;
}
2.全局
生成数字型ID:895503808246718464,ID长度超出JavaScript
3.默认,mybatisplus默认使用全局唯一的数字类型
ID_WORKER(2,“全局唯一ID”),生成的ID格式:ccba0a05fcbe46898304d5213d2b5518
classTableInfoHelper
privatestaticbooleaninitTableId(GlobalConfigurationglobalConfig,TableInfotableInfo,Fieldfield,
Class>clazz){
TableIdtableId=field.getAnnotation(TableId.class);
if(tableId!=null){
if(tableInfo.getKeyColumn()==null){
/*
*主键策略(注解>全局>默认)
*/
if(IdType.INPUT!=tableId.type()){
tableInfo.setIdType(tableId.type());
}else{
tableInfo.setIdType(globalConfig.getIdType());
}
/*字段*/
Stringcolumn=field.getName();
if(StringUtils.isNotEmpty(tableId.value())){
column=tableId.value();
tableInfo.setKeyRelated(true);
}else{
//开启字段下划线申明
if(globalConfig.isDbColumnUnderline()){
column=StringUtils.camelToUnderline(column);
}
//全局大写命名
if(globalConfig.isCapitalMode()){
column=column.toUpperCase();
}
}
tableInfo.setKeyColumn(column);
tableInfo.setKeyProperty(field.getName());
returntrue;
}else{
throwExceptionId(clazz);
}
}
returnfalse;
}
到此这篇关于mybatis-plus实体类主键策略有3种(小结)的文章就介绍到这了,更多相关mybatis-plus实体类主键策略内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。