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