mybatis提供了foreach语法用于所谓的批量查询,使用方式如下:

①、定义接口

/**
* 批量获取任务id列表对应的任务名称
* @param taskIdList:任务id列表
* @return :任务id,及对应的任务名称的列表信息
*/
List<Map<String, Object>> batchSelectTaskNameById(@Param("taskIdList") List<String> taskIdList);

②、xml中的实现

<select id="batchSelectTaskNameById" parameterType="list" resultType="map">
SELECT id,name
FROM tb_task
WHERE 1=1 AND id IN
<foreach collection="taskIdList" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</select>

项目中就按照如上方式进行了批量查询,在开发过程中未发现什么问题,正常使用,感觉还提高了代码运行效率。

但是问题出现在项目内测过程中,大概用户量仅达到几百,出现的状况是:涉及到该种方式批量查询信息的接口,时而效率正常几十毫秒而已,时而效率异常慢,感觉是被阻塞一样5秒到10秒左右。排除了是因为传入list过长的原因,仅传入长度3,4的列表也会出现上述问题。

解决办法:将查询内容的信息先在程序代码中处理,即将list列表拼接成sql语句字符串形式,直接将条件当做参数传入xml中。

这样处理后既可以正常稳定进行批量查询了。

所以项目中勿使用foreach方式去批量查询,切记,坑很深。

最新文章

  1. 【夯实PHP基础】UML序列图总结
  2. Redis从基础命令到实战之字符串类型
  3. &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;. use different encoding
  4. 【转载】关于Linux Shell 特殊字符
  5. nopcommerce里面的@Html.Widget(&quot;home_page_top&quot;) 是什么?
  6. string,const char*,char*之间的相互转换
  7. [Android Pro] 内容提供者ContentProvider的基本使用
  8. Netdom query基本用法
  9. C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
  10. Fragment 整个生命周期
  11. django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)
  12. 【IOS】关于CGTransform的几个动画
  13. C++开源代码项目汇总
  14. netty&mdash;&mdash;私有协议栈开发案例
  15. session统计在线人数
  16. display:table 表格布局
  17. 818C.soft thief
  18. springMVC实现登陆
  19. [Android] Android 类似今日头条顶部的TabLayout 滑动标签栏 效果
  20. pycharm运行Django发生AppRegistryNotReady: Apps aren&#39;t loaded yet.

热门文章

  1. Vue大概知识体系和学习参考
  2. SQL学习——BETWEEN运算符
  3. ARM与x86 CPU架构对比
  4. SpringMVC的工作原理(转)
  5. Oracle笔记(十一) 建表、更新、查询综合练习
  6. Django框架orm
  7. 车型识别API调用与批量分类车辆图片
  8. iFrame跨域的方式
  9. 洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)
  10. FasterRunner (httptunner+django)搭建以及小功能补充