Mybatis中成功批量降级的几种姿态 总有一款适宜你 (mybatisplus)

Mybatis中成功批量降级的几种姿态 总有一款适宜你 (mybatisplus)

本文目录导航:

Mybatis中成功批量降级的几种姿态,总有一款适宜你

在Mybatis中成功批量降级的操作,重要集中在XML性能文件中。

以下为四种罕用方法,每种方法都具备其特点,实用于不同的场景。

首先,经过经常使用`case when`,咱们可以针对不同的索引值降级特定的字段。

但是,这种方法在解决少量字段时,SQL语句的长度会变得过长,效率较低。

其次,`foreach`语句可以生成多条SQL语句,从而简化批量降级环节。

但须要留意的是,Mybatis映射文件中的SQL语句自动不允许以;开头,因此须要在衔接MySQL的URL中减少&allowMultiQueries=true,以允许多条SQL的口头。

再者,`ON DUPLICATE KEY UPDATE`是MySQL中基于主键或惟一索引的批量降级模式。

当已有婚配的惟一标示或主键时,它会降级已有数据;而当无婚配数据时,新数据会被拔出。

`replace into`是MySQL特有的批量降级模式。

它在发现已有婚配数据时,会先删除后拔出新数据;假设数据不存在,则间接拔出新数据。

值得留意的是,假设以后数据库用户没有删除权限,则不可经常使用`replace into`。

以上四种方法各有长处,开发者应依据实践名目需求及数据库环境选用适宜的批量降级战略。

mybatis批量降级foreach里的list是怎样来的,哪儿定义的,求解?

传入的参数,关于传入的list,mybatis会给它一个自动的称号list

mybatisplus的批量保留降级 executeBatch flushStatements

近期在解决mybatisplus的批量保留操作时,我发现其executeBatch和flushStatements的口头机制。

首先,批量保留的终点是saveOrUpdateBatch方法,它自动经常使用一个固定的批量大小 DEFAULT_BATCH_SIZE = 1000。

这个方法会调用到 saveOrUpdateBatch(Collection entityList, int batchSize),关于每个实体list,它会开启一个事务。

在executeBatch中,重要步骤是先经过id查问(Preparing: SELECT id by id),而后依据查问结果判别是保留(save)还是降级(update)。

假设查问结果总数为1,说明是update操作,接着会口头update by id,参数经过lambda传递。

在executeBatch外部,会遍历实体列表,每批操作i个记载后,就会启动SQL事务提交,调用MybatisBatchExecutor的doFlushStatements。

假设实体数量超越1000,就会分批提交。

这种批量操作模式,假设须要搜查,应该依据特定关键字,而不是间接寻觅saveOrUpdateBatch方法。

经过测试,我发现解决1000条数据的批量保留大概须要2.5秒,这说明事务解决会占用必定期间。

因此,在实践经常使用时,须要留意这个期间老本,以提升性能。

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

23阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读