Mybatis-plus id生成策略

这篇具有很好参考价值的文章主要介绍了Mybatis-plus id生成策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.1、为什么选择不同的id生成策略

1.2、策略种类

1.2.1、AUTO(自动增长策略)

1.2.3、ASSIGN_ID(雪花算法)

1.2.4、ASSIGN_UUID(不含中划线的UUID)

1.2.5、NONE(无状态)

1.3、注意


1.1、为什么选择不同的id生成策略

1、Mybatis-plus提供了多种主键生成策略, 可以在Pojo类中主键上加注解进行配置,例如数据库主键自增 @TableId(type=IdType.AUTO)

2、不同的表应用不同的id生成策略:

  • 日志:自增(1,2,3,4,……)
  • 购物订单:特殊规则(FQ23948AK3843)
  • 外卖单:关联地区日期等信息(10 04 20200314 34 91)
  • 关系表:可省略id
  • ……

3、表现形式

  • 名称 @TableId
  • 类型 属性注解
  • 位置 模型类中用于表示主键的属性定义上方
  • 作用 设置当前类中主键属性的生成策略
  • 相关属性
    • value(默认):设置数据库表主键名称
    • type:设置主键属性的生成策略,值参照IdType的枚举值

1.2、策略种类

1.2.1、AUTO(自动增长策略)

AUTO自动增长策略,这个配合数据库使用,Mysql可以,但是Oracle不行。不配合会报错。

在主键字段上加上 @TableId(type = IdType.AUTO)

@Data
public class UserInfo {
    //指定主键使用数据库ID自增策略
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String userName;
    private String passWord;
}

1.2.2、Input(自定义输入策略)

自定义输入策略:如果不想使用数据库的自增主键,也可以使用INPUT进行自己传递主键即可,进行插入工作,但在插入之前一定要检查数据库是否已经存在了该主键。

Mybatis-Plus 内置了如下数据库主键序列:

DB2KeyGenerator
H2KeyGenerator
KingbaseKeyGenerator
OracleKeyGenerator
PostgreKeyGenerator

使用方法如下所示:

首先添加@Bean

 @Bean
    public OracleKeyGenerator oracleKeyGenerator(){
        return new OracleKeyGenerator();
    }

然后实体类配置主键 Sequence,指定主键策略为IdType.INPUT即可:

@Data
@KeySequence(value = "SEQ_ACL_ROLE" , clazz = Integer.class)
public class AclUser implements Serializable {
    private static final long serialVersionUID = 780903014942735924L;
    @TableId(value = "ID",type = IdType.INPUT)
    private Integer id;

1.2.3、ASSIGN_ID(雪花算法)

如果不设置type值,默认则使用IdType.ASSIGN_ID策略(自 3.3.0 起)。该策略会使用雪花算法自动生成主键 ID,主键类型为 Long 或 String。

雪花算法(SnowFlake)是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的。

使用方法
指定主键生成策略使用雪花算法(默认策略)

@Data
public class UserInfo {
    //指定主键生成策略使用雪花算法(默认策略)
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private String userName;
    private String passWord;
}

1.2.4、ASSIGN_UUID(不含中划线的UUID)

如果使用 IdType.ASSIGN_UUID 策略,则会自动生成不含中划线的 UUID 作为主键,主键类型为 String

@Data
public class UserInfo {
    //指定主键生成策略为不含中划线的UUID
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    private String userName;
    private String passWord;
}

1.2.5、NONE(无状态)

如果使用 IdType.NONE 策略,表示未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT

假设我们希望默认全部都使用 AUTO 策略(数据库ID自增),那么可以在 application.properties 中添加如下配置进行修改:

mybatis-plus.global-config.db-config.id-type=auto

1.3、注意

注意事项:Mysql 的默认值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为nullnull值将被插入到表中,默认值此时失效。使用Mybatis操作也是一样的道理,只要这个实体里面含有这个字段,并且值为null,则不会插入默认值。文章来源地址https://www.toymoban.com/news/detail-424911.html

到了这里,关于Mybatis-plus id生成策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring boot集成mybatis-plus——Mybatis Plus 新增数据并返回主键 ID(图文讲解)

     更新时间 2023-01-10 15:37:37 大家好,我是小哈。 本小节中,我们将学习如何通过 Mybatis Plus 框架给数据库表新增数据,主要内容思维导图如下: Mybatis Plus 新增数据思维导图 为了演示新增数据,在前面小节中,我们已经定义好了一个用于测试的用户表, 执行脚本如下: 定义一

    2024年02月02日
    浏览(41)
  • MyBatis-Plus中的更新操作(通过id更新和条件更新)

    目录 前言 一、通过id更新 二、条件更新 2.1 使用QueryWrapper进行条件更新 2.2 使用UpdateWrapper进行条件更新 总结  本文学习MP中的更新操作方法,带大家一起查看源码,了解更新操作的方法。学会熟练地去运用更新方法解决自己在项目中的问题。 Mybatis-Plus知识点[MyBatis+MyBatis-Pl

    2024年02月06日
    浏览(34)
  • 【Mybatis-Plus】代码生成器

    目录 安装插件 数据库建表  Other Config Database Code Generator 根据创建好的数据库表,来直接生成代码   点开之后有两个功能 1.数据库配置 2.代码生成 首先点开这个配置数据库     配置完数据库后,再点击这个功能   勾选完毕之后,点击code generator   这几个包就自动生成出来

    2024年02月06日
    浏览(32)
  • Mybatis-plus 代码生成器

    1、pom.xml 2、mybatis-generator.xml 这里可以生成一个example类 什么是example类? Mybatis-Plus的代码生成器可以自动生成一些基本的代码文件,其中包括了Example(查询条件构造器)类。如下是Example类的大致解释和用法: Example类是在Mybatis-Plus中用于构建复杂条件查询的常用工具类,它是

    2024年02月01日
    浏览(65)
  • MyBatis-Plus 可视化代码生成器mybatis-plus-generator-ui

    在基于Mybatis的开发模式中,很多开发者还会选择Mybatis-Plus来辅助功能开发,以此提高开发的效率。虽然Mybatis也有代码生成的工具,但Mybatis-Plus由于在Mybatis基础上做了一些调整,因此,常规的生成工具生成的代码还有一些不太符合预期。而且对于多数据库的支持不是很好。

    2024年02月04日
    浏览(35)
  • 在SpringBoot使用MyBatis-Plus代码生成器

    文章目录 前言 一、引入依赖 二、使用步骤 1.创建一个类(例如CodeGenerator) 2.编辑生成模板 三、一键生成代码  结尾 在SpringBoot中,通过引入MyBatis-Plus 实现数据库代码生成器,我还写好了一些模板方法,可一键生成。 注意 适用版本:mybatis-plus-generator 3.5.1 及其以上版本 在

    2024年02月02日
    浏览(41)
  • Java:mybatis-plus-generator-ui 基于Mybatis-Plus的代码自助生成器

    引用官方文档上的简介: 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等 ,可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。 文档 github: https://github.com/davidfantasy/mybatis-plus-generator-ui gitee: https://g

    2024年02月10日
    浏览(41)
  • 如何利用Mybatis-Plus自动生成代码(超详细注解)

    1、简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性

    2024年02月01日
    浏览(32)
  • 自动化生成代码:MyBatis 的 Generator与MyBatis-Plus 的 AutoGenerator

    自动化生成代码是现在一种非常常见的技术,它可以大大提高开发效率,减少重复劳动。而在 Java 开发中,MyBatis 是一个非常流行的 ORM 框架,而其中的 Generator 和 MyBatis-Plus 中的 AutoGenerator 是两个非常好用的自动化代码生成工具,下面我们来分别介绍一下它们的使用。 MyBati

    2024年02月03日
    浏览(35)
  • 【重要】springboot实战(六)之mybatis-plus代码自动生成器

    目录 环境: 步骤: 1.添加依赖 2.配置代码 3.运行 测试 1.测试生成的service 1.1、service用法 2.分页查询 2.1、分页插件配置  2.2、测试 3.源码 jdk:1.8 springboot版本:2.7.15 mybatis-plus版本:3.5.1以上 (本文章用的当前最新版本:3.5.3.2,代码适用于3.5.1版本以上的版本) 在测试类中创建

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包