首页 新闻 会员 周边

java的ssm项目,大批量数据如何批量查询?

0
悬赏园豆:50 [已解决问题] 解决于 2024-05-06 10:57

项目为普通的出入库系统:
假如说有一个一对多的表结构
(主表50个字段,明细表100个字段,明细表存主表主键关联);
接口详情:前端传入5000条主表的单号,要求查出对应的主表和明细表数据并响应;
接口响应时间需小于20秒,否则会导致请求超时报错;

目前接口详细:

  1. 接收json参数,根据逗号切割单号参数,转为ArrayList<String>;
  2. 将单号集合根据长度切割,每999个为一个集合;共6个集合;
  3. 循环单号集合,每999个单号查询一次数据库,共请求6次数据库
    select * from 。。。 where num IN (单号集合);
  4. 组装参数并返回;

执行时长为5~8秒,请问各位大神,还有什么优化方式没有

一路随风而行的主页 一路随风而行 | 初学一级 | 园豆:176
提问于:2024-04-29 16:36
< >
分享
最佳答案
0

Java—CountDownLatch使用详解
https://www.cnblogs.com/Andya/p/12925634.html
CountDownLatch countDownLatch = new CountDownLatch(N);
查询线程中 执行 countDownLatch.countDown();
countDownLatch.await(countDownLatchTimeout, TimeUnit.MINUTES);
为啥是 999一个集合?不能是 50x100 = 5000,100个集合吗?此时,N=100。
属于 IO耗时型 操作,线程可以多点——主要是在 等待嘛。
仅供参考。

收获园豆:50
快乐的凡人721 | 老鸟四级 |园豆:3955 | 2024-04-30 15:31

文章是 园友 的
posted @ 2020-05-20 19:33 Andya_net

快乐的凡人721 | 园豆:3955 (老鸟四级) | 2024-04-30 15:32

注意 finally 的使用

快乐的凡人721 | 园豆:3955 (老鸟四级) | 2024-04-30 15:32

因为mybatis中in的长度限制为999个元素

一路随风而行 | 园豆:176 (初学一级) | 2024-05-06 10:55

@一路随风而行:
园友 提供的 解决思路:
https://www.cnblogs.com/qq376324789/p/12784537.html
posted @ 2020-04-27 09:33 笑~笑

快乐的凡人721 | 园豆:3955 (老鸟四级) | 2024-05-06 12:04

@一路随风而行:
谢谢告知 这个 限制。

快乐的凡人721 | 园豆:3955 (老鸟四级) | 2024-05-06 12:05
其他回答(1)
0

楼上办法好

SuperHK | 园豆:210 (菜鸟二级) | 2024-04-30 16:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册