Mybatisplus真实高效批量插入附容错机制

这篇具有很好参考价值的文章主要介绍了Mybatisplus真实高效批量插入附容错机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

提示:mybatisplus自带真实批量插入

在mybatisplus已知常用批量插入为继承Iservice里的saveBatch方法和saveOrUpdateBatch方法,
进入源码可知,此两种方法的插入均为单条插入,如图:
Mybatisplus真实高效批量插入附容错机制
其中可看出,实则调用的sql方法为:
Mybatisplus真实高效批量插入附容错机制
则此sql插入效率跟单条插入无异,只是省了一些代码操作。

优化

此时我们可以自定义mybatisplus的SqlInjector
具体操作为:

class EasySqlInjector : MppSqlInjector() {
    override fun getMethodList(mapperClass: Class<*>?): MutableList<AbstractMethod> {
        val methodList = super.getMethodList(mapperClass)
        methodList.add(InsertBatchSomeColumn())
        return methodList
    }
}

继承mybatisplus原先自带的sql方法,并加入**InsertBatchSomeColumn()方法,进入此方法源码查看,
Mybatisplus真实高效批量插入附容错机制
它的实现方法相当于mybatisplus的
**标签
Mybatisplus真实高效批量插入附容错机制

技术细节

这里我们要利用spring的IOC把它交给Spring管理:

@Configuration
class MyatisPlusConfiguration {

    @Bean
    fun mybatisPlusInterceptor(): MybatisPlusInterceptor {
        val interceptor = MybatisPlusInterceptor()
        //向Mybatis过滤器链中添加分页拦截器
        interceptor.addInnerInterceptor(PaginationInnerInterceptor(DbType.POSTGRE_SQL))
        //还可以添加i他的拦截器
        return interceptor
    }
    @Primary
    @Bean
    fun easySqlInjector() : EasySqlInjector{
        return EasySqlInjector()
    }
}

后续的mapper直接继承BaseMapper然后添加此方法即可使用:

interface FqMinMapper : MppBaseMapper<FqpfminDto> {
    fun insertBatchSomeColumn(entityList: List<FqpfminDto>): Int

}

提示:这里批量插入时,如果一个出错可能会整批插入失败
这里最好给表定义一个规则,如主键重复时插入忽略异常抛出null,在insert时加IGNORE
也需要注意各数据库对于批量插入字节的限制。

小结

此方法提高插入速度数据量越大越明显,当然如果此需求无法满足,也可重写mybatisplus的sql注入器源码,然后自己注入去实现需要的功能文章来源地址https://www.toymoban.com/news/detail-470858.html

到了这里,关于Mybatisplus真实高效批量插入附容错机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Flink(十二)【容错机制】

            最近已经放假了,但是一直在忙一个很重要的自己的一个项目,用 JavaFX 和一个大数据组件联合开发一个功能,也算不枉我学了一次 JavaFX,收获很大,JavaFX 它作为一个 GUI 开发语言,本质还是 Java,所以很好的锻炼了我的 Java 水平、抽象能力 ... 平常看似简单的一些概

    2024年01月17日
    浏览(45)
  • 【Flink】容错机制

    目录 1、检查点 ​编辑1.1 检查点的保存 1.1.1 周期性的触发保存 1.1.2 保存的时间点 1.1.3 时间点的保存与恢复 1.1.3.1保存 ​编辑 1.1.3.2 恢复的具体步骤: 1.2 检查点算法 1.2.1 检查点分界线(Barrier) 1.2.2 分布式快照算法(Barrier对齐的精准一次) 1.2.3 分布式快照算法(Barrier对

    2024年02月04日
    浏览(40)
  • Flink中的容错机制

    在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 在流处理中,我们可以用存档读档的思路,将之前某个时间点的所有状态保存下来,这份存档就被称为“检查点(CkeckPoint)”。 当Flink程序异常重启时,我们就可以在检查点中“ 读档 ”,恢

    2024年01月23日
    浏览(44)
  • Flink容错机制

    在出现故障时,我们将系统重置回正确状态,以确保数据的完整性和准确性。在流处理中,我们采用存档和读档的策略,将之前的计算结果进行保存。这样,在系统重启后,我们可以继续处理新数据,而无需重新计算。 更重要的是,在有状态的流处理中,任务需要保持其之前

    2024年01月20日
    浏览(41)
  • Flink-容错机制

    流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是不切实际的。因为各种硬件软件的原因,运行一段时间后程序可能异常退出、机器可能宕机,

    2024年02月02日
    浏览(45)
  • FlinkAPI开发之容错机制

    在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 “随时存档”确实恢复起来方便,可是需要我们不停地做存档操作。如果每处理一条数据就进行检查点的保存,当大量数据同时到来时,就会耗费很多资源来频繁做检查点,数据处理的速度就

    2024年01月18日
    浏览(34)
  • Flink的容错机制

    容错:指出错后不影响数据的继续处理,并且恢复到出错前的状态。 检查点:用存档读档的方式,将之前的某个时间点的所有状态保存下来,故障恢复继续处理的结果应该和发送故障前完全一致,这就是所谓的检查点。 检查点的控制节点:jobManager里面的检查点协调器,向

    2024年02月04日
    浏览(48)
  • Flink运行架构以及容错机制

    flink是一个开发框架,用于进行数据批处理,本文主要探讨Flink任务运行的的架构。由于在日常生产环境中,常用的是flink on yarn 和flink on k8s两种类型的模式,因此本文也主要探讨这两种类型的异同,以及不同角色的容错机制。 JM是一个独立的JVM进程,在HA场景下一个App能够同

    2024年01月24日
    浏览(50)
  • 大数据之flink容错机制

    大数据之flink容错机制 https://blog.51cto.com/dashujutongmeng/5241407

    2024年02月15日
    浏览(46)
  • 《Flink学习笔记》——第十章 容错机制

    10.1 检查点(Checkpoint) 为了故障恢复,我们需要把之前某个时间点的所有状态保存下来,这份“存档”就是“检查点” 遇到故障重启的时候,我们可以从检查点中“读档”,恢复出之前的状态,这样就可以回到当时保存的一刻接着处理数据了。 故障恢复之后继续处理的结果

    2024年02月10日
    浏览(75)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包