Mybatis-plus全局id生成策略详解
Mybatis-plus全局id生成策略
在配置文件中加入以下代码后就不需要在实体类种的id上添加
@TableId(value = “id”, type = IdType.AUTO)
mybatis-plus: global-config: db-config: id-type: auto #设置主键自动生成策略(全局id生成策略)
Mybatis-plus6种主键生成策略小结
/** * 数据库ID自增,数据库需要支持主键自增(如MySQL),并设置主键自增 */ AUTO(0), /** * 该类型为未设置主键类型,默认使用雪花算法生成(snowflake) */ NONE(1), /** * 用户输入ID,数据类型和数据库保持一致就行 * <p>该类型可以通过自己注册自动填充插件进行填充</p> */ INPUT(2), /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */ /** * 全局唯一ID (idWorker),数值类型 数据库中也必须是数值类型 否则会报错 * mp自带策略,生成19位值,数字类型使用这种策略 比如long */ ID_WORKER(3), /** * 全局唯一ID (UUID,不含中划线) * 每次生成随即唯一的值 * 缺点:排序不方便 */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示),数据库也要保证一样字符类型 * mp自带策略,生成19位值 字符串类型使用这种策略 */ ID_WORKER_STR(5);
直接在实体类的主键字段加注解配置使用哪一种策略
举例:
@TableId(type = IdType.ID_WORKER_STR) private String id;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
mybatis-plus主键生成策略
MP 支持多种主键策略 默认是推特的"" 雪花算法"" ,也可以设置其他策略下面我演示主键策略使用 MP的主键定义在一个一个枚举类中 源码如下 public enum IdType { AUTO(0),//数据库自增 依赖数据库 NONE(1),// 表示该类型未甚至主键类型 (如果没有主键策略)默认根据雪花算法生成 INPUT(2),//用户输入ID(该类型可以通过自己注册填充插件进行填充) //下面这三种类型,只有当插入对象id为空时 才会自动填充. ID_WO
-
Mybatisplus主键生成策略算法解析
mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法 雪花算法 snowflflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID.其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0.可以保证几乎全球唯一! mybatisplus默认主键生成策略有可能会和我们的数据库
-
mybatis-plus 如何使用雪花算法ID生成策略
目录 mybatis-plus 可以通过@TableId注解指定主键生成策略 看一下源码大概找一下雪花算法的实现方式 自定义ID生成器实现 Mybatis-plus 中生成雪花算法id的工具类 mybatis-plus 可以通过@TableId注解指定主键生成策略 @TableId(value="id",type=IdType.ASSIGN_ID) 值 描述 AUTO 数据库ID自增 NONE 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT) INPUT
-
Mybatis-plus全局id生成策略详解
Mybatis-plus全局id生成策略 在配置文件中加入以下代码后就不需要在实体类种的id上添加 @TableId(value = "id", type = IdType.AUTO) mybatis-plus: global-config: db-config: id-type: auto #设置主键自动生成策略(全局id生成策略) Mybatis-plus6种主键生成策略小结 /** * 数据库ID自增,数据库需要支持主键自增(如MySQL),并设置主键自增
-
java唯一字符串ID生成方案详解
工作中经常会有生成唯一字符串的需求.通常最容易想到的是UUID.UUID的唯一性毋庸置疑,但是32位的长度也容易让人退避三舍.也曾经想过参考<短网址生成方案>来生成一串ID,但是试验了一下发现唯一性不太好. 最终采用的方案是时钟方案,简单来说就是用当前时间戳做唯一ID. 采用时间戳做ID,秒或毫秒都容易产生重复,换成纳秒在单节点上就没问题了.参考百度百科关于纳秒的描述就能清楚为什么纳秒级别的时间戳不会产生重复: 光在真空中一纳秒仅传播0.3米.个人电脑的微处理器执行一道指令(如将两数相加)约需
-
一种简单的ID生成策略: Mysql表生成全局唯一ID的实现
生成全局ID的方法很多, 这里记录下一种简单的方案: 利用mysql的自增id生成全局唯一ID. 1. 创建一张只需要两个字段的表: CREATE TABLE `guid` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `stub` char(1) NOT NULL DEFAULT '' COMMENT '桩字段,占坑的', PRIMARY KEY (`id`), UNIQUE KEY `uk_stub` (`stub`) -- 将 st
-
Mybatis中Mapper映射文件使用详解
紧接上文所述,在这篇文章中我将对Mapper映射文件进行详细的说明. Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd.我们先大体上看看支持哪些配置?如下所示,从Eclipse里截了个屏: 从上图可以看出,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.delete.select(增删改查);cache.cache-ref.resultMap.parameterMap.sql. 下
-
SpringBoot学习系列之MyBatis Plus整合封装的实例详解
前言 MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发.提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现了单表的基础get.save(插入/更新).list.page.delete接口,使用Vo去接收.传输数据,实体负责与数据库表映射. 这样做的目的是与我们之前的那套jpa保持编码风格上的一致,当我们的通用接口不能满足要求时,应当先考虑使用MP的Service层CRUD接口,然后是Mapper的接口,
-
Android分包MultiDex策略详解
1.分包背景 这里首先介绍下MultiDex的产生背景. 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt.DexOpt的执行过程是在第一次加载Dex文件的时候执行的.这个过程会生成一个ODEX文件,即Optimised Dex.执行ODex的效率会比直接执行Dex文件的效率要高很多. 但是在早期的Android系统中,DexOpt有一个问题,DexOpt会把每一个类的方法id检索起来,存在一个链表结构里面.但是这个链表的长度是用一
-
MyBatis Properties及别名定义实例详解
上一篇我们介绍了mybatis的增删改查入门实例,我们发现在 mybatis-configuration.xml 的配置文件中,对数据库的配置都是硬编码在这个xml文件中,如下图,那么我们如何改进这个写法呢? 1.我们将 数据库的配置语句写在 db.properties 文件中 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm jdbc.username=root jdbc.password=ro
-
Mybatis velocity脚本的使用教程详解(推荐)
可能很多童鞋都还不是很清楚在mybatis可以使用各种脚本语言来定义Mapper文件里面的动态SQL:目前mybatis支持的脚本语言有XML(默认的):Velocity和Freemarker三种.使用不同的脚本语言来完成Mapper文件的编写,第一是使用自己熟悉的脚本语言,第二是能够定义更多丰富的自定义指令来简化Mapper的开发,关于MyBatis支持脚本的原理分析,自定义脚本指令后面再写文章分析,本文先介绍mybatis中velocity脚本的使用方式. mybatis-velocity项
-
Mybatis 逆向工程的三种方法详解
Mybatis 逆向工程 逆向工程通常包括由数据库的表生成 Java 代码 和 通过 Java 代码生成数据库表.而Mybatis 逆向工程是指由数据库表生成 Java 代码. Mybaits 需要程序员自己编写 SQL 语句,但是 Mybatis 官方提供逆向工程可以针对单表自动生成 Mybaits 执行所需要的代码,包括 POJO.Mapper.java.Mapper.xml -. 一.通过 Eclipse 插件完成 Mybatis 逆向工程 1. 在线安装 Eclipse 插件
-
关于MyBatis plus条件构造器的逐条详解
目录 条件构造器 说明 警告 说明 allEq 个别参数说明 eq 实例 ne gt ge lt le between notBetween like notLike likeLeft likeRight isNull isNotNull in 例 例 notIn inSql notInSql groupBy orderByAsc 实例 orderByDesc orderBy having func or and nested apply-拼接SQL 实例 last exists notExis
随机推荐
- JS 正则表达式的相关方法(正则学习笔记1)
- 如何操作Redis和zookeeper实现分布式锁
- js函数在frame中的相互调用详解
- Java8 Lambda表达式详解及实例
- Oracle EXP和IMP用法和介绍
- PHP中常用的数组操作方法笔记整理
- php通过array_merge()函数合并两个数组的方法
- Android编程实现基于BitMap获得图片像素数据的方法
- Mysql中的事务是什么如何使用
- 浅谈js使用in和hasOwnProperty获取对象属性的区别
- JavaScript 的方法重载效果
- 编写轻量ajax组件02--浅析AjaxPro
- Yii中表单用法实例详解
- SQL四舍五入、向下取整、向上取整函数介绍
- JQuery radio(单选按钮)操作方法汇总
- 给Python入门者的一些编程建议
- 深入浅析MySQL COLUMNS分区
- EasyUI Datebox 日期验证之开始日期小于结束时间
- jQuery表格排序组件-tablesorter使用示例
- jquery $.each() 使用小探