Skip to main content

关于分页

理论分页​

Count∈NPageSize∈NCount=0  ⟺  PageNumber∈−1PageSize=0  ⟺  PageNumber=[0,+∞)Count \in N \\ PageSize \in N \\ Count=0 \iff PageNumber \in {-1} \\ PageSize=0 \iff PageNumber = [0,+\infty) \\ PageSize∈N∗  ⟺  PageNumber={x:x∈⌊CountPageSize⌋}\textcolor{#bf033b}{PageSize \in N^* \iff PageNumber = \{x: x \in \lfloor \frac{Count}{PageSize} \rfloor\}}

Count=0 无结果

PageSize=0 无意义

GUI分页实现​

Count∈NPageSize∈NCount=0  ⟺  PageNumber∈0PageSize=0  ⟺  PageNumber=[0,+∞)Count \in N \\ PageSize \in N \\ Count=0 \iff PageNumber \in {0} \\ PageSize=0 \iff PageNumber = [0,+\infty) \\ PageSize∈N∗  ⟺  PageNumber={x:x∈⌈CountPageSize⌉}\textcolor{#bf033b}{PageSize \in N^* \iff PageNumber = \{x: x \in \lceil \frac{Count}{PageSize} \rceil\}}

Count=0 无结果

PageSize=0 无意义

SQL分页实现​

count∈Nlimit∈N∗offset∈Ncount \in N \\ limit \in N^* \\ offset \in N

limit=0 无意义

对应关系​

理论:SQL​

offset={0if PageNumber=−1PageNumber∗PageSizeif PageNumber>−1offset= \begin{cases} 0 & \text{if } PageNumber=-1 \\ PageNumber*PageSize & \text{if } PageNumber \gt -1 \end{cases}

GUI:SQL​

offset={0if PageNumber=0(PageNumber−1)∗PageSizeif PageNumber>0offset= \begin{cases} 0 & \text{if } PageNumber=0 \\ (PageNumber-1)*PageSize & \text{if } PageNumber \gt 0 \end{cases}

实施​

特殊的,如果在查询时数据已发生变化,即: offset≥countoffset \ge count,考虑用户体验,应修正为最后一页LastPageLastPage

理论​

LastPage=⌊CountPageSize⌋LastPage=\lfloor \frac{Count}{PageSize} \rfloor

GUI​

LastPage=⌈CountPageSize⌉LastPage=\lceil \frac{Count}{PageSize} \rceil

SQL​

  • 理论: offset=offset=
  • GUI: LastOffset=LastPage∗PageSize−PageSize=CountLastOffset=LastPage*PageSize-PageSize=Count