可以将List<Record>封装成Page<Record>吗?

奔波霸儿 发布于 2016/03/22 18:00
阅读 2K+
收藏 0

收藏!数据建模最全知识体系解读!>>>

@JFinal 你好,想跟你请教个问题:

我有一个List<Record>,因为无法直接通过sql语句得出分页结果,我只有首先通过Db.Query(String)方法查询出多个查询结果,再用java语言处理多个查询结果,最后我以想将处理后的查询结果封装到Page<Record>中去,可以实现吗?

我尝试过,比如我处理后查询结果有15条数据,我把它们封装到Page<Record>中,是这么写的:

Page<Record> page = new Page<Record>(pageIndex, pageSize, treatedListRecord, treatedListRecord.size());

注:pageIndex是当前页;pageSize是每页显示数据条数;treatedListRecord是一个List<Record>对象,包含处理后的查询结果; treatedListRecord.size()是 treatedListRecord的大小。

我这么写,它会直接把15条数据一次性全部显示出来,没有分成两页显示?请问怎么实现?我自己再看一下......


2016年3月22日 22:52:10,补充改进:

我上面的Page<Record>构造方法我在这里写错了,应该是Page<Record> page = new Page<Record>(resultList, pageIdx, pageSize, totalPage, resultList.size()),如波哥所说一样。这里我下午粗心写错了


加载中
0
奔波霸儿
奔波霸儿

引用来自“JFinal”的评论

    利用 Page 提供的构造方法,传入正确的参数进去即可:Page(List<T> list, int pageNumber, int pageSize, int totalPage, int totalRow)

    其实 jfinal 自身也是这样做的。

引用来自“奔波霸儿”的评论

嗯,我上面Page<Record>构造方法误写了。其实我自己在尝试将List<Record>封装成Page<Record>时使用的构造方法是对的,之所以还要在此向波哥提问,是因为我这样封装的Page<Record>对象 page在jsp页面遍例时,先前没有使用begin和end属性,导致它在一个页面将全部记录在一页全部显示出来,就没有达到分页的效果,刚刚静下来想了一下,想起了这两个属性,成功了,达到了目的。
谢谢波哥!
<c:forEach items="${page.list }" var="var" varStatus="idx" begin="${(page.pageNumber-1)*10 }" end="${(page.pageNumber)*10-1 }">
    <tr>
        <td>${idx.index+1 }</td>
        <td>${var.VehGroupName }</td>
        <td>${var.Cph }</td>
        <td>${var.onLineRate }</td>
    </tr>

</c:forEach>

这样即可,begin不能写成begin="${(page.pageNumber-1)*10+1 }" ,因为List对象取出时索引是从0开始的,否则会导致少一条数据即第一条数据不会输出

0
pantrick
pantrick
你这样可能会导致内存溢出的
奔波霸儿
奔波霸儿
那么,请问你有解决方案吗?
0
JFinal
JFinal

    利用 Page 提供的构造方法,传入正确的参数进去即可:Page(List<T> list, int pageNumber, int pageSize, int totalPage, int totalRow)

    其实 jfinal 自身也是这样做的。

0
奔波霸儿
奔波霸儿

引用来自“JFinal”的评论

    利用 Page 提供的构造方法,传入正确的参数进去即可:Page(List<T> list, int pageNumber, int pageSize, int totalPage, int totalRow)

    其实 jfinal 自身也是这样做的。

嗯,我上面Page<Record>构造方法误写了。其实我自己在尝试将List<Record>封装成Page<Record>时使用的构造方法是对的,之所以还要在此向波哥提问,是因为我这样封装的Page<Record>对象 page在jsp页面遍例时,先前没有使用begin和end属性,导致它在一个页面将全部记录在一页全部显示出来,就没有达到分页的效果,刚刚静下来想了一下,想起了这两个属性,成功了,达到了目的。
谢谢波哥!
返回顶部
顶部