需要使用的切割list集合的工具类,链接:https://www.cnblogs.com/sxdcgaq8080/p/9376947.html

处理逻辑,原本的一个LIst,进行切割,循环进行mybatis查询即可

举个例子:

mapper.xml中方法查询如下:

 <select
id="dealFindByNameAndMobile"
parameterType="com.pisen.cloud.luna.ms.dealer.base.mapper.bean.DealerBean"
resultType="com.pisen.cloud.luna.ms.dealer.base.domain.Dealer"> SELECT
dea.id id,
dea.uid uid,
dea.enabled_flag enabledFlag,
dea.delete_flag deleteFlag,
dea.tenement_id tenementId,
dea.parent_id parentId,
dea.name name,
dea.type type,
dea.bar_code barCode,
dea.outer_code outerCode,
dea.outer_id outerId,
dea.mne_code mneCode,
dea.address address,
dea.address_xy addressXy,
dea.business_area businessArea,
dea.business_area_xy businessAreaXy FROM
dealer AS dea
LEFT JOIN (SELECT a.* FROM contact AS a where a.main_contact = ${@com.pisen.cloud.luna.ms.dealer.base.domain.Contact@IS_MAIN} AND a.delete_flag = ${@com.pisen.cloud.luna.ms.dealer.base.common.BaseDomain@DELETE_FLAG_NO} AND a.enabled_flag = ${@com.pisen.cloud.luna.ms.dealer.base.common.BaseDomain@ENABLED_FLAG_EN}) con ON dea.uid = con.dealer_id WHERE
dea.delete_flag = ${@com.pisen.cloud.luna.ms.dealer.base.common.BaseDomain@DELETE_FLAG_NO} AND
dea.enabled_flag = ${@com.pisen.cloud.luna.ms.dealer.base.common.BaseDomain@ENABLED_FLAG_EN} <if test="name != null and name != '' ">
AND
dea.name LIKE '%' #{name} '%'
</if> AND
dea.uid IN
<foreach collection="uidList" open="(" close=")" separator="," item="item" index="index">
#{item}
</foreach>

对应mapper.java中方法也是同名方法:

List<Dealer> dealFindByNameAndMobile(DealerBean bean);

这个DealerBean呢则是为了查询专门封装的一个java类

import java.util.List;

public class DealerBean {

    private  String name;

    private String mobile;

    private List<String> uidList;

    public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getMobile() {
return mobile;
} public void setMobile(String mobile) {
this.mobile = mobile;
} public List<String> getUidList() {
return uidList;
} public void setUidList(List<String> uidList) {
this.uidList = uidList;
}
}

在serviceImpl中调用这个mapper的方法处,进行的分批次切割处理:【此处调用的工具类的方法,请查看上面链接处】

@Override
public List<Dealer> findDealerList(DealerBean bean) { List<String> list = bean.getUidList();
List<List<String>> result = ListUtils.splitListBycapacity(list,100); List<Dealer> allDealer = new ArrayList<>();
for (List<String> strings : result) {
bean.setUidList(strings);
allDealer.addAll(dealerMapper.dealFindByNameAndMobile(bean));
} return allDealer;
}

这样即可完成IN在mybatis中的分批次查询

最新文章

  1. Linux上的SQL Server的起步
  2. oracle 11g安装过程中问题:找不到WFMLRSVCApp.ear
  3. OC内存管理
  4. matlab初学之strcat、num2str
  5. VMware克隆虚拟机,克隆机网卡启动不了解决方案
  6. nodeJS中exports和mopdule.exports的区别
  7. 手动实现WCF[转]
  8. 浅谈Android 6.0之Runtime Permissions
  9. jsp实现验证码
  10. JUC回顾之-CyclicBarrier底层实现和原理
  11. 20145236 《Java程序设计》 第十周学习总结
  12. JS each 跳出
  13. javascript笔记07:使用Object类为实例定义方法和属性
  14. Swift 循环、数组 字典的遍历
  15. 201521123059 《Java程序设计》第二周学习总结
  16. Android万能适配器Adapter-android学习之旅(74)
  17. java实现 批量转换文件编码格式
  18. turtle模块绘图
  19. Django 的ORM 数据操作
  20. Linux下配置yum

热门文章

  1. 005 JAVA多线程和并发基础面试问答(转载)
  2. webIcon
  3. JVM核心机制(类加载器、三种类加载器、代理加载模式、双亲委派机制
  4. Leetcode 之Binary Tree Postorder Traversal(46)
  5. linux命令(49):wget命令
  6. 启动Tomcat报错 “A child container failed during start”
  7. Larazrus 快捷键 总结。
  8. 最短路径-迪杰斯特拉(dijkstra)算法及优化详解
  9. Qt精简编译方法总结
  10. 洛谷P1392 取数 [堆]