在项目中往往会要求对多表数据进行查询操作,而两表中的数据只有编号相关联,但查询条件中要根据其中一张表中的电话号码来查询信息,这样我们必须要先根据电话号码来查询编号,再通过编号参数来执行查询操作。但往往一个电话号码又可能对应多条信息(即多个编号),这样操作起来就比较麻烦!常规方法就是循环操作,这样就大大降低了效率!
下面来看看我的操作:
1.首先取出电话号码信息,保存在一个list中(注意此List中只包含编号字段)
List objslist =null;
if(form.getPhoneNumber()!=null && form.getPhoneNumber().length()>0)
{
phoneNumber =form.getPhoneNumber();
objslist =vehicleDs.queryVehicleNumber(phoneNumber); }
2.查询另一张表中的所有数据,然后去比较有相同的编号的数据,保存在list中
list = consumptionRecordDs.querySQLResults(vehicleNumber, mainmeternumber,form.getCodeId(),startTime,endTime, convertString2Timestamp(tingcbeginTime), convertString2Timestamp(tingcendTime), convertString2Timestamp(likbeginTime), convertString2Timestamp(likendTime),form.getConsumptionMoneybegin(),form.getConsumptionMoneyend());
if(list!=null && list.size()>0)
{
UrpcsConsumptionRecord crecord =null;
for(int j=0;j<list.size();j++)
{
crecord =(UrpcsConsumptionRecord)list.get(j);
String veNumber =crecord.getVehicleNumber();
if(
objslist.contains(veNumber)) {
dList.add(crecord);
}else{
continue;
}
}
}
注意:红色部分文字,用list与string作比较,取出具有相同编号的对象,关于List.contains()的使用,可以查看java API
这样我就查询出了具有同一手机号码的所有相关数据,但是现在要对这个list进行分页,又出现了问题!
3.对list进行分页操作
count =dList.size(); //取出总记录数
if(count/form.getPageSize()==0 && count%form.getPageSize()>0)
{
fromIndex=0;
toIndex =count;
}else
{
if(count/form.getPageSize()>=1 && count % form.getPageSize()>=0)
{
fromIndex =form.getPageSize() * (form.getPageNo()-1);
if(form.getPageSize() * form.getPageNo() >=count)
{
toIndex =count;
}else{
toIndex =form.getPageSize() * form.getPageNo();
}
}
}
dataList =dList.subList(fromIndex, toIndex);
注意:红色字体部分就是对整个list按照每页记录数进行拆分。
JAVA API中有对List.subList(formIndex,toIndex)的解释,大家可以自寻查找!
分享到:
相关推荐
分页通常涉及到对数据进行切割,以便一次只显示一部分,而这里的“list集合分页”可能就是将一个大的List对象拆分成多个小的List对象,每个小的List代表一页的数据。 实现这种自定义分页,首先我们需要知道总条数和...
- 确保分页操作对性能的影响最小,如使用数据库的分页查询功能,避免一次性加载所有数据。 - 考虑SEO优化,确保每个分页都有唯一的URL,并正确设置元信息。 - 用户体验是关键,提供清晰的分页指示,如“上一页”、...
这里的“分割”可能指的是对文本或者数据进行切分操作。在易语言中,可以使用“字符串分割”命令将一个字符串按照指定的分隔符拆分成多个子字符串,这对于处理结构化的数据非常有用,例如CSV文件或以特定符号分隔的...
4. **高亮显示**:对搜索结果中的匹配词进行高亮,通常涉及使用Highlighter类,它会根据查询结果找出相关段落并使用特殊标记(如标签)包围匹配的词汇。 5. **优化和维护**:定期优化索引以提高搜索性能,同时处理...
在Java Spring Boot项目中,可以使用Pageable接口和JPA的Page对象进行分页查询: ```java Pageable pageable = PageRequest.of(page, size); Page<YourEntity> pageData = repository.findAll(pageable); ``` 此外...
实现分页时,还可以考虑优化性能,如使用缓存技术(如Redis)来存储最近访问过的页面,减少对数据库的依赖。另外,前端分页(如Ajax)也是一种常见方法,它可以在不刷新整个页面的情况下更新内容,提升用户体验。 ...
后端使用js+express,读取csv文件存储到内存,前端需要那一段的数据,后端就给前端那一页的数据。非常适合前端新手。同时分为两个文件serverImage和clientImage,其中包含项目源码,一些配置文件,以及后端需要处理的...
在实际应用中,这个方法可以用于分页展示数据、批量处理任务、或者将大文件读取成小块进行操作等场景。只要需要将一个大的数据集合切割成多个可管理的部分,这个方法都能派上用场。 总结一下,本篇文章主要介绍了...
分页加载可以将大数据集拆分为小块,每次只加载一部分,用户滚动到页面底部时再加载下一页,这样既节省了内存,又提供了流畅的用户体验。 本示例重点在于实现ListView的动态加载分页功能。首先,我们需要理解...
总结,PHP+MySQL分页涉及的关键技术包括`LIMIT`子句的使用、分页计算逻辑以及PHP对数据库的操作。通过这些技术,我们可以有效地管理大量数据的展示,提供更流畅的用户体验。在实际项目中,还需要考虑安全性、性能...
在 `pagination.js` 中,我们可以定义分页器的初始化方法,获取当前页数、总页数、每页显示条数等信息,并根据这些信息动态生成分页器的链接。 ```javascript define(function(require, exports, module) { var ...
这减少了初次加载时间,并降低了对内存的需求。 2. **分页**(Pagination):将大列表分成多个小页面,每次只加载一页数据,可以显著提高页面响应速度。这种方式适合用户期望逐步浏览的情况。 3. **虚拟滚动**...
在HTML中,我们将`pagination`组件用作`div`的子组件,通过`:cur`, `:all`和`:page-num`传递属性值,并通过`@page-to="loadList"`监听并处理分页事件。当`page-to`事件触发时,父组件(在这个例子中是`div`的实例)...
分段批量处理的核心思想是将大规模的数据操作拆分成多个小规模的操作,每个操作处理一部分数据,这样既能避免单个SQL语句过于庞大,又能有效控制内存使用,提高系统性能。在Java等编程语言中,通常会创建一个工具类...
- 给结果集分页:使用ROW_NUMBER()或LIMIT子句进行分页处理。 - 重新生成房间号:根据房间分配逻辑重新编号。 - 跳过表中n行:使用FETCH或LIMIT子句实现。 - 排列组合去重:使用DISTINCT关键字去除重复的行。 -...
然后,让我们假设有一些东西的列表,应该在页面上拆分并分页: const YourComponent = ( props ) => { // let's assume that the users list is passing here: const { users } = props ; // your logic how the ...
4. **后台管理**:管理员可以通过特定的URL访问管理页面,对留言进行操作。这些操作同样通过PHP处理,但可能需要额外的权限验证。 五、优化与扩展 1. **安全性**:对用户提交的数据进行过滤和转义,防止SQL注入和...
3. 大量数据读取:使用JDBC进行批量处理,尤其是在数据量超过一万条时,应分页读取,以减少内存消耗和提升性能。 4. 注释要求:每个方法、参数、全局和局部变量都需要注释,说明其用途和功能。对于多处调用的方法,...
16. **集合迭代删除算法**:在遍历集合并删除元素时,需注意迭代器的使用,以避免在遍历过程中改变集合结构导致的异常。通常推荐使用Iterator的`remove()`方法进行删除。 以上这些算法和知识点都是Android开发中...