1. import java.io.Serializable;
    2. import java.util.List;
    3. /**
    4. * 分页结果类
    5. * @author Administrator
    6. *
    7. */
    8. public class PageResult implements Serializable {
    9. private long total;//总记录数
    10. private List rows;//当前页记录
    11. private int page;//当前页
    12. private int size;//页面大小
    13. private int totalPage;//总页数
    14. private int beg;//首页
    15. private int end;//尾页
    16. private int pre;//上一页
    17. private int next;//下一页
    18. private static int DEFAULT_PAGE_RANGE=4;
    19. public PageResult(){}
    20. public PageResult(long total, List rows, int page, int size) {
    21. super();
    22. this.total = total;
    23. this.rows = rows;
    24. this.page = page;
    25. this.size = size;
    26. // 计算
    27. this.totalPage = (int) (total % size == 0 ? (total/size): (total/size+1));
    28. // 获取显示起始页码
    29. calcPage(page,totalPage,2);
    30. this.pre = page == 1 ? 1: page-1;
    31. this.next = page == totalPage ? totalPage:page+1;
    32. }
    33. public void calcPage(int pageNum,int pageCount,int sideNum){
    34. int startNum = 0;
    35. int endNum = 0;
    36. if(pageCount<=sideNum){
    37. endNum = pageCount;
    38. }else{
    39. if((sideNum+pageNum)>=pageCount){
    40. endNum = pageCount;
    41. }else{
    42. endNum = sideNum+pageNum;
    43. if((sideNum+pageNum)<=(2*sideNum+1)){
    44. if((2*sideNum+1)>=pageCount){
    45. endNum = pageCount;
    46. }else{
    47. endNum = 2*sideNum+1;
    48. }
    49. }else{
    50. endNum = sideNum + pageNum;
    51. }
    52. }
    53. }
    54. if(pageNum<=sideNum){
    55. startNum = 1;
    56. }else{
    57. if((pageNum+sideNum)>=pageCount){
    58. if((2*sideNum+1)>=pageCount){
    59. if((pageCount - 2*sideNum)>=1){
    60. startNum = pageCount - 2*sideNum;
    61. }else{
    62. startNum = 1;
    63. }
    64. }else{
    65. startNum = pageCount - 2*sideNum;
    66. }
    67. }else{
    68. if((pageNum-sideNum)>=1){
    69. startNum = pageNum - sideNum;
    70. }else{
    71. startNum = 1;
    72. }
    73. }
    74. }
    75. this.beg = startNum;
    76. this.end = endNum;
    77. }
    78. public long getTotal() {
    79. return total;
    80. }
    81. public void setTotal(long total) {
    82. this.total = total;
    83. }
    84. public List getRows() {
    85. return rows;
    86. }
    87. public void setRows(List rows) {
    88. this.rows = rows;
    89. }
    90. public int getPage() {
    91. return page;
    92. }
    93. public void setPage(int page) {
    94. this.page = page;
    95. }
    96. public int getSize() {
    97. return size;
    98. }
    99. public void setSize(int size) {
    100. this.size = size;
    101. }
    102. public int getTotalPage() {
    103. return totalPage;
    104. }
    105. public void setTotalPage(int totalPage) {
    106. this.totalPage = totalPage;
    107. }
    108. public int getBeg() {
    109. return beg;
    110. }
    111. public void setBeg(int beg) {
    112. this.beg = beg;
    113. }
    114. public int getEnd() {
    115. return end;
    116. }
    117. public void setEnd(int end) {
    118. this.end = end;
    119. }
    120. public int getPre() {
    121. return pre;
    122. }
    123. public void setPre(int pre) {
    124. this.pre = pre;
    125. }
    126. public int getNext() {
    127. return next;
    128. }
    129. public void setNext(int next) {
    130. this.next = next;
    131. }

    pageResult中四个属性由service层封装,通过构造函数进行封装,剩余5个属性通过内部封装。直接使用即可。