记 MybatisPlus 使用 saveBatch方法批量插入时雪花算法ID重复问题.

这篇具有很好参考价值的文章主要介绍了记 MybatisPlus 使用 saveBatch方法批量插入时雪花算法ID重复问题.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MybatisPlus 使用 saveBatch方法批量插入时雪花算法ID重复问题. (Java)
背景 :

批量插入的实体ID属性使用 注解 @TableId(type = IdType.ASSIGN_ID) 方式 实现ID生成.
代码中需要批量插入实体数据,使用 saveBatch(List); 时报数据库错误: ID KEY 条目重复.

解决 :

于是尝试使用 IdWorker.getId() 方法在生成实体时插入ID,然后DeBug查看ID生成情况. 发现也是出现了ID重复的情况,然后观察实体属性发现一个规律,重复的ID实体其他属性值也是一致的,就有了这么一个猜测:
因为实体属性相等,影响了ID的赋值,导致ID重复.于是我把属性重复的实体剔除后再次生成.果然ID没有重复了.

具体原因 :

因为当时时间比较急促没来得急去查看源码,具体是哪一步导致出现这样的问题,后续补充上.文章来源地址https://www.toymoban.com/news/detail-506767.html

到了这里,关于记 MybatisPlus 使用 saveBatch方法批量插入时雪花算法ID重复问题.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • mybatisPlus注解配置雪花id

    好的,那我就结合你提供的代码为例,来详细讲解一下使用 MyBatis-Plus 的注解指定 ID 生成策略的方法。 引入依赖 在你的项目中,需要引入 MyBatis-Plus 的依赖以及对应的数据库驱动和连接池依赖,例如: 添加 MySQL 配置 在你的  application.yml (或  application.properties )文件中添加

    2024年02月04日
    浏览(28)
  • springboot使用aop排除某些方法,更新从另外一张表,从另外一张表批量插入

    在Spring Boot中使用AOP时,如果想要排除某些方法不被切面所影响,可以通过使用切面表达式中的!within来实现。以下是一个示例: 在上面的示例中,@Before注解用于定义切面的beforeAdvice方法。execution(* com.example.service. . (…))表示切入所有com.example.service包下的方法。而!wit

    2024年02月13日
    浏览(48)
  • 分布式id解决方法--雪花算法

    uuid,jdk自带,但是数据库性能差,32位呀。 mysql数据库主键越短越好,B+tree产生节点分裂,大大降低数据库性能,所以uuid不建议。 redis的自增,但是要配置维护redis集群,就为了一个id,还要引入一套redis。费事,成本高。 如果有序自增别人就知道你的业务量多少了。 分布式

    2024年02月04日
    浏览(42)
  • Mysql大数据批量插入方法

    MySQL是当前最流行的关系型数据库之一,大数据批量插入是MySQL中常用的操作之一。在处理大量数据时,如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,可以大大提高数据的处理速度。下面介绍几种MySQL大数据批量插入的方法。 使用LOAD DATA INFILE语句

    2024年02月10日
    浏览(39)
  • MyBatis 批量插入数据的 3 种方法!

    数据库的最终效果如下: 接下来我们将使用 Spring Boot 项目,批量插入 10W 条数据来分别测试各个方法的执行时间。​ 循环单次插入的(测试)核心代码如下: 运行以上程序,花费了 88574 毫秒,如下图所示: MP 批量插入功能核心实现类有三个:UserController(控制器)、UserS

    2024年02月07日
    浏览(42)
  • 数据库批量插入数据的三种方法

    测试环境:SpringBoot项目+MybatisPlus框架+MySQL数据库+Lombok 方法一: for循环插入(单条) (总耗时:n分钟,每次都要获取连接Connection、释放连接和关闭资源等操作,比较耗时,这里就没测了) 方法二: 批量插入saveBatch (4~7秒,这里用到了MybatisPLus的saveBatch批量插入方法,实际

    2024年02月14日
    浏览(49)
  • spring boot中使用雪花算法生成雪花ID

    目录 1、什么是雪花算法 2、雪花算法的优缺点 3、spring boot项目中使用雪花算法使用 雪花算法(Snowflake)是一种生成全局唯一ID的算法,由Twitter公司开发。它可以在分布式系统中生成全局唯一的ID,解决分布式系统中的数据合并和分片等问题。 雪花算法生成的ID是一个64位的长

    2024年02月02日
    浏览(32)
  • 雪花算法的使用(java)

    雪花算法( Snowflake )是一种分布式唯一 ID 生成算法,能够生成唯一的、有序的、高可用的 ID,常用于分布式系统中作为全局唯一标识符(GUID)。雪花算法生成的 ID 是一个 64 位的整数,其中高位是时间戳,中间位是机器 ID,低位是序列号。 雪花算法生成的 ID 包含以下信息

    2024年02月01日
    浏览(65)
  • 雪花算法使用以及优化问题 附代码

    话不多说上代码 将该类放置在你的 Java 项目源代码目录中; 创建 Snowflake 实例,并传入数据中心ID和机器标识ID: 调用 nextId() 方法生成下一个ID: 将生成的ID用作你的业务对象ID,可以使用 long 类型存储。 在使用时,需要确保数据中心ID和机器标识ID是唯一的,以避免生成重复

    2024年02月02日
    浏览(42)
  • 线上使用雪花算法生成id重复问题

    项目中使用的是hutool工具类库提供的雪花算法生成id方式,版本使用的是5.3.1 雪花算法生成id方式提供了getSnowflake(workerId,datacenterId)获取单例的Snowflake对象,并对生成id的方法nextId()进行了synchronized加锁处理。 IdUtil Snowflake 项目中使用雪花算法 IdUtils 举例controller UserController 线上

    2023年04月23日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包