public class DBUtils {
/**
* * 当离线查询中in(not in)里的个数超过1000时 ,拆分成几个不同的in分句中 *
*
* create by liutingfeng * * @param list * 满足条件的集合 * @param detachedCriteria
* * DetachedCriteria对象 * @param inOrNot * in 或者 not * @param field * 字段名称 * @param
* manageSizeEachOnce * 拆分每个in中放多少个,不填写默认是1000个 * @return DetachedCriteria *
*
* example: *
*
* final DetachedCriteria criteria = *
* DetachedCriteria.forClass(Product.class); *
*
* final List scopeProductClasses = * this.productClassDao
* .findSubClassesByMultiIds("1,2"); *
*
* DbHelper.splitSourceInDc(scopeProductClasses, criteria, "in", *
* "class5");
*/
@SuppressWarnings("unchecked")
public static DetachedCriteria splitSourceInDc(List list, DetachedCriteria detachedCriteria, String inOrNot,
String field, Integer... manageSizeEachOnce) {
Integer size = 1000;
// 如果指定了每次处理的数量,没有写默认为1000
if (ObjectHelper.isNotEmpty(manageSizeEachOnce) && ObjectHelper.isNotEmpty(manageSizeEachOnce[0])) {
size = manageSizeEachOnce[0];
}
if (ObjectHelper.isNotEmpty(list) && list.size() > 0) {
Junction junction = null;
if (("in").equals(inOrNot)) {
junction = Restrictions.disjunction();
} else if ("not".equals(inOrNot)) {
junction = Restrictions.conjunction();
}
// 总共分成totalPage数个in (not in)语句
int totalPage = list.size() / size + (list.size() % size > 0 ? 1 : 0);
for (int i = 0; i < totalPage; i++) {
// 起始list的记录
int startIndexOfList = i * size; // 结束list的记录
int endIndexOfList = (i + 1) * size > list.size() ? list.size() : (i + 1) * size;
List sublist = list.subList(startIndexOfList, endIndexOfList);
junction.add(Restrictions.in(field, sublist));
}
detachedCriteria.add(junction);
}
return detachedCriteria;
}
}
分享到:
相关推荐
当系数矩阵的秩小于未知数的个数时,方程组可能有无穷多解;当增广矩阵的秩小于系数矩阵的秩时,方程组无解。 8. **二次型的正交变换**:二次型f可以通过正交变换U将矩阵化为对角形,即UYX的二次型为标准形。题目中...
1102:与指定数字相同的数的个数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 33228 通过数: 21033 【题目描述】 输出一个整数序列中与指定数字相同的数的个数。 【输入】 输入包含三行: 第一行为N,表示整数...
1068:与指定数字相同的数的个数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 28644 通过数: 20305 【题目描述】 输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N...
可以使用`LOOP`指令,配合一个计数寄存器,每次循环前减1,当计数寄存器为0时,循环结束。在每次迭代中,都要对位掩码左移一位,以便检查下一位。 5. **结束**:循环结束后,计数寄存器的值就是数据中1的个数。可以...
这里我们关注的是如何“实现求一个数字里面的0的个数”。这个任务可以通过多种编程语言和方法来解决,下面我们将详细讨论两种常见的实现方式。 **方法一:遍历法** 这种方法是最直观的,通过遍历数字的每一位,...
### C++ 计算一个数字的二进制中0或1的个数原理及代码解析 在计算机科学中,二进制表示法是基础之一,它不仅被用于数据存储,还在算法设计、加密技术以及系统优化等多个方面发挥着重要作用。本篇文章将详细探讨如何...
### 求二进制数中1的个数 #### 背景介绍 在计算机科学领域,理解和操作二进制数是非常基础且重要的技能之一。对于一个字节(8位)的变量,求其二进制表示中“1”的个数是一个常见的问题。这一问题不仅出现在计算机...
java查询文件的个数
此代码就是统计字符串中元音字母的个数而已
本题“经典面试题(1):统计整数中1的个数”是一个典型的例子,其核心是计算一个无符号32位整数在二进制表示下含有多少个1。这个问题在计算机科学中被称为“位操作”或“计数比特”的问题,涉及到位运算、循环以及...
这个“快速搜索位图索引中1的个数”主题主要聚焦于如何高效地统计位图中代表“1”的位的数量。位图索引利用二进制位来表示数据,每个位对应一个特定的值或对象,0表示不存在,1表示存在。由于位操作的高效性,这种...
在编程领域,统计一个字符串中特定字符的个数是一项基础任务,它涉及到字符串处理和循环控制等基础知识。在这个场景中,我们使用汇编语言来实现这个功能。汇编语言是一种低级编程语言,它直接对应于机器指令,具有...
C语言程序设计-求一批数中小于平均值的数的个数;.c
判断2个字符串中相同的个数,如果超过4个相同就输出1,否则输出0
在本案例中,我们关注的是获取一个字符串中英文字母(包括大写和小写字母)的个数。以下是对这个任务的详细阐述: 1. **字符串基本操作**:在Delphi中,字符串通常表示为`string`类型,它是一个Unicode字符串,可以...
计算机原理中,求正数、负数、零的个数是汇编语言程序设计的基本问题。通过编程实践,熟悉汇编语言分支与循环结构的程序设计方法,并了解汇编程序设计的基本技术与基本方法。 本实验的目的是通过编程实践,统计DA_...
该查询使用了 NOT IN 操作符和子查询,子查询用于统计每个学生的课程信息。 知识点: * NOT IN 操作符 * 子查询 查询学过“001”并且也学过编号“002”课程的同学的学号 该查询使用了子查询和 AND 操作符,子...
- 结束条件:当不满足继续循环的条件时退出循环。 3. **循环程序的设计、调试方法**: - 设计阶段:明确循环的目的、循环次数以及循环体内要执行的操作。 - 调试阶段:通过打印中间结果、使用断点等方式验证循环...
输入数字n,统计0~n中1的个数,如12,1,10,11,12带1的个数5个。(假定输入的数0~999)(数组法)