springboot 中mybatis 一次批量插入数据

/ 技术 / 0 条评论 / 1900浏览

业务场景需求

公司中营销服务批量给会员发优惠券
原了逻辑是遍历多会员,发多种券,每种券对应多个数量
如 100个会员 发3种券,每种券发100张 
插入结果:100*3*100*2表(券池+券流水)=3W条数据
第一:和数据库交互3W次,不行,伤不起。
第二:http请求时间超时,硬伤。

解决方案一

根据模板开进程,N个模板N个进程。 经分析,还是存在超时。若选1W个会员选一个模板还是1W次交互 放弃方案一

解决方案二

批量插入,只插入两次,一次券池,一次券流水
存在问题:Mysql 提交 默认接受sql的大小是1048576(1M)
问题解决:若数据量很大需修改配置,如下:
调整MySQL安装目录下的my.ini文件中[mysqld]段的"max_allowed_packet = 1M"

解决方案二代码如下: