mybatis-plus中的实体类主键策略有哪些

发布时间:2020-11-06 17:11:46 作者:Leah
来源:亿速云 阅读:209

mybatis-plus中的实体类主键策略有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

mybatis plus 实体类主键策略有3种( 注解 > 全局 > 默认 )

mybatis-plus中的实体类主键策略有哪些

当IdType的类型为ID_WORKER、ID_WORKER_STR或者UUID时,主键由MyBatis Plus的IdWorker类生成,idWorker中调用了分布式唯一 ID 生成器 - Sequence

1.注解方式

@TableId(type = IdType.AUTO)在实体类增加注解即可

@TableName("t_article")
public class TArticle extends Model<TArticle> {
  private static final long serialVersionUID = 1L;
  /**
   * id
   */
  @TableId(type = IdType.AUTO)
  private Long id;
  /**
   * 正文
   */
  private String article;
  }

2.全局 

生成数字型ID:895503808246718464,ID长度超出JavaScript

3.默认,mybatis plus默认使用全局唯一的数字类型

ID_WORKER(2, “全局唯一ID”),生成的ID格式:ccba0a05fcbe46898304d5213d2b5518

class TableInfoHelper
private static boolean initTableId(GlobalConfiguration globalConfig, TableInfo tableInfo, Field field,
      Class<&#63;> clazz) {
    TableId tableId = 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());
        }
        /* 字段 */
        String column = 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());
        return true;
      } else {
        throwExceptionId(clazz);
      }
    }
    return false;
  }

关于mybatis-plus中的实体类主键策略有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. javabean是不是实体类
  2. Java中实体类不要使用基本类型的知识点有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis-plus 主键策略

上一篇:深入浅析Spring事务传播的原理

下一篇:利用Django加载静态文件失败怎么解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》