Class Page<E>

All Implemented Interfaces:
Closeable, Serializable, AutoCloseable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess, SequencedCollection<E>

public class Page<E> extends ArrayList<E> implements Closeable
Mybatis - 分页对象
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • Page

      public Page()
    • Page

      public Page(int pageNo, int pageSize)
    • Page

      public Page(int pageNo, int pageSize, boolean count)
    • Page

      public Page(int[] rowBounds, boolean count)
      Parameters:
      rowBounds - 分页对象
      count - 总数

      int[] rowBounds 0 : offset 1 : limit

  • Method Details

    • getStackTrace

      public String getStackTrace()
    • getResult

      public List<E> getResult()
    • getPages

      public int getPages()
    • setPages

      public Page<E> setPages(int pages)
    • getEndRow

      public long getEndRow()
    • setEndRow

      public Page<E> setEndRow(long endRow)
    • getPageNo

      public int getPageNo()
    • setPageNo

      public Page<E> setPageNo(int pageNo)
    • getPageSize

      public int getPageSize()
    • setPageSize

      public Page<E> setPageSize(int pageSize)
    • getStartRow

      public long getStartRow()
    • setStartRow

      public Page<E> setStartRow(long startRow)
    • getTotal

      public long getTotal()
    • setTotal

      public void setTotal(long total)
    • getReasonable

      public Boolean getReasonable()
    • setReasonable

      public Page<E> setReasonable(Boolean reasonable)
    • getPageSizeZero

      public Boolean getPageSizeZero()
    • setPageSizeZero

      public Page<E> setPageSizeZero(Boolean pageSizeZero)
    • getOrderBy

      public String getOrderBy()
    • setOrderBy

      public <E> Page<E> setOrderBy(String orderBy)
      设置排序字段,增加 SQL 注入校验,如果需要在 order by 使用函数,可以使用 setUnsafeOrderBy(String) 方法
      Parameters:
      orderBy - 排序字段
    • setUnsafeOrderBy

      public <E> Page<E> setUnsafeOrderBy(String orderBy)
      不安全的设置排序方法,如果从前端接收参数,请自行做好注入校验。

      请不要故意使用该方法注入然后提交漏洞!!!

      Parameters:
      orderBy - 排序字段
    • isOrderByOnly

      public boolean isOrderByOnly()
    • setOrderByOnly

      public void setOrderByOnly(boolean orderByOnly)
    • getDialectClass

      public String getDialectClass()
    • setDialectClass

      public void setDialectClass(String dialectClass)
    • getKeepOrderBy

      public Boolean getKeepOrderBy()
    • setKeepOrderBy

      public Page<E> setKeepOrderBy(Boolean keepOrderBy)
    • getKeepSubSelectOrderBy

      public Boolean getKeepSubSelectOrderBy()
    • setKeepSubSelectOrderBy

      public void setKeepSubSelectOrderBy(Boolean keepSubSelectOrderBy)
    • getAsyncCount

      public Boolean getAsyncCount()
    • setAsyncCount

      public void setAsyncCount(Boolean asyncCount)
    • using

      public Page<E> using(String dialect)
      指定使用的分页实现,如果自己使用的很频繁,建议自己增加一层封装再使用
      Parameters:
      dialect - 分页实现类,可以使用 PageAutoDialect 类中注册的别名,例如 "mysql", "oracle"
      Returns:
      the object
    • isCount

      public boolean isCount()
    • setCount

      public Page<E> setCount(boolean count)
    • pageNo

      public Page<E> pageNo(int pageNo)
      设置页码
      Parameters:
      pageNo - 页码
      Returns:
      结果
    • pageSize

      public Page<E> pageSize(int pageSize)
      设置页面大小
      Parameters:
      pageSize - 分页大小
      Returns:
      结果
    • count

      public Page<E> count(Boolean count)
      是否执行count查询
      Parameters:
      count - 统计
      Returns:
      结果
    • reasonable

      public Page<E> reasonable(Boolean reasonable)
      设置合理化
      Parameters:
      reasonable - 合理化
      Returns:
      结果
    • pageSizeZero

      public Page<E> pageSizeZero(Boolean pageSizeZero)
      当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
      Parameters:
      pageSizeZero - 分页大小
      Returns:
      结果
    • boundSqlInterceptor

      public Page<E> boundSqlInterceptor(BoundSqlHandler boundSqlHandler)
      设置 BoundSql 拦截器
      Parameters:
      boundSqlHandler - 分页拦截器
      Returns:
      结果
    • countColumn

      public Page<E> countColumn(String columnName)
      指定 count 查询列
      Parameters:
      columnName - 列名
      Returns:
      结果
    • keepOrderBy

      public Page<E> keepOrderBy(boolean keepOrderBy)
      转换count查询时保留查询的 order by 排序
      Parameters:
      keepOrderBy -
      Returns:
    • keepOrderBy

      public boolean keepOrderBy()
    • keepSubSelectOrderBy

      public Page<E> keepSubSelectOrderBy(boolean keepSubSelectOrderBy)
      转换count查询时保留子查询的 order by 排序
      Parameters:
      keepSubSelectOrderBy -
      Returns:
    • keepSubSelectOrderBy

      public boolean keepSubSelectOrderBy()
    • asyncCount

      public Page<E> asyncCount(boolean asyncCount)
      异步count查询
      Parameters:
      asyncCount -
      Returns:
    • enableAsyncCount

      public Page<E> enableAsyncCount()
      使用异步count查询
      Returns:
    • disableAsyncCount

      public Page<E> disableAsyncCount()
      不使用异步count查询
      Returns:
    • asyncCount

      public boolean asyncCount()
    • toPageInfo

      public Paginating<E> toPageInfo()
    • toPageInfo

      public <T> Paginating<T> toPageInfo(Page.Function<E,T> function)
      数据对象转换
      Type Parameters:
      T - 泛型对象
      Parameters:
      function - 函数
      Returns:
      分页属性
    • toPageSerializable

      public Serialize<E> toPageSerializable()
    • toPageSerializable

      public <T> Serialize<T> toPageSerializable(Page.Function<E,T> function)
      数据对象转换
      Type Parameters:
      T - 泛型对象
      Parameters:
      function - 函数
      Returns:
      分页属性
    • doSelectPage

      public <E> Page<E> doSelectPage(Querying select)
    • doSelectPageInfo

      public <E> Paginating<E> doSelectPageInfo(Querying select)
    • doSelectPageSerializable

      public <E> Serialize<E> doSelectPageSerializable(Querying select)
    • doCount

      public long doCount(Querying select)
    • getCountColumn

      public String getCountColumn()
    • setCountColumn

      public void setCountColumn(String countColumn)
    • getBoundSqlInterceptor

      public BoundSqlHandler getBoundSqlInterceptor()
    • setBoundSqlInterceptor

      public void setBoundSqlInterceptor(BoundSqlHandler boundSqlHandler)
    • toString

      public String toString()
      Overrides:
      toString in class AbstractCollection<E>
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable