加载中...
加载中...
SQL中IN 超过1000 分批处理

SQL中IN 超过1000 分批处理 原创

SQL中IN 超过1000 分批处理

复制收展Java/**
* 分批处理
* @param source
* @param step
* @return
*/
public static List<List<TaskAuthUser>> getSplitTaskAuthUserList(List<TaskAuthUser> source, int step) {
List<List<TaskAuthUser>> out = new ArrayList();
if (source.size() > step) {
List<TaskAuthUser> in = new ArrayList();
Iterator i$ = source.iterator();

while(i$.hasNext()) {
TaskAuthUser l = (TaskAuthUser)i$.next();
in.add(l);
if (in.size() == step) {
out.add(in);
in = new ArrayList();
}
}

if (in.size() != 0) {
out.add(in);
}
} else {
out.add(source);
}

return out;
}

public void deleteTaskAuthUser(List<TaskAuthUser> deleteList) {
List<List<TaskAuthUser>> splitTaskAuthUserList = getSplitTaskAuthUserList(deleteList, 1000);
for (List<TaskAuthUser> authUserList : splitTaskAuthUserList) {
List<Long> tauIdList = new ArrayList();
Iterator i$ = authUserList.iterator();
while (i$.hasNext()) {
TaskAuthUser tau = (TaskAuthUser) i$.next();
tauIdList.add(tau.getId());
}

StringBuffer hql = new StringBuffer();
hql.append(" delete from TaskAuthUser au ");
hql.append(" where au.id in (:tauIdList) ");
Query query = this.getSession().createQuery(hql.toString());
query.setParameterList("tauIdList", tauIdList);
query.executeUpdate();
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49


没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199057
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0