Module bus.pager

Class Page<E>

Type Parameters:
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)
      构造函数,指定页码和页面大小。
      Parameters:
      pageNo - 页码(从1开始)
      pageSize - 页面大小
    • Page

      public Page(int pageNo, int pageSize, boolean count)
      构造函数,指定页码、页面大小和是否执行count查询。
      Parameters:
      pageNo - 页码(从1开始)
      pageSize - 页面大小
      count - 是否执行count查询
    • Page

      public Page(int[] rowBounds, boolean count)
      构造函数,基于行范围分页。
      Parameters:
      rowBounds - 行范围数组,0: offset, 1: limit
      count - 是否执行count查询
  • Method Details

    • getStackTrace

      public String getStackTrace()
      获取创建Page对象的堆栈信息。
      Returns:
      堆栈信息
    • getResult

      public List<E> getResult()
      获取分页结果集。
      Returns:
      分页数据列表
    • getPages

      public int getPages()
      获取总页数。
      Returns:
      总页数
    • setPages

      public Page<E> setPages(int pages)
      设置总页数。
      Parameters:
      pages - 总页数
      Returns:
      当前Page对象
    • getEndRow

      public long getEndRow()
      获取末行位置。
      Returns:
      末行位置
    • setEndRow

      public Page<E> setEndRow(long endRow)
      设置末行位置。
      Parameters:
      endRow - 末行位置
      Returns:
      当前Page对象
    • getPageNo

      public int getPageNo()
      获取当前页码。
      Returns:
      当前页码
    • setPageNo

      public Page<E> setPageNo(int pageNo)
      设置页码,支持合理化处理。
      Parameters:
      pageNo - 页码
      Returns:
      当前Page对象
    • getPageSize

      public int getPageSize()
      获取页面大小。
      Returns:
      页面大小
    • setPageSize

      public Page<E> setPageSize(int pageSize)
      设置页面大小。
      Parameters:
      pageSize - 页面大小
      Returns:
      当前Page对象
    • getStartRow

      public long getStartRow()
      获取起始行位置。
      Returns:
      起始行位置
    • setStartRow

      public Page<E> setStartRow(long startRow)
      设置起始行位置。
      Parameters:
      startRow - 起始行位置
      Returns:
      当前Page对象
    • getTotal

      public long getTotal()
      获取总记录数。
      Returns:
      总记录数
    • setTotal

      public void setTotal(long total)
      设置总记录数并计算总页数。
      Parameters:
      total - 总记录数
    • getReasonable

      public Boolean getReasonable()
      获取分页合理化开关状态。
      Returns:
      合理化开关状态
    • setReasonable

      public Page<E> setReasonable(Boolean reasonable)
      设置分页合理化开关。
      Parameters:
      reasonable - 合理化开关
      Returns:
      当前Page对象
    • getPageSizeZero

      public Boolean getPageSizeZero()
      获取pageSizeZero开关状态。
      Returns:
      pageSizeZero开关状态
    • setPageSizeZero

      public Page<E> setPageSizeZero(Boolean pageSizeZero)
      设置pageSizeZero开关。
      Parameters:
      pageSizeZero - 当为true时,若pageSize为0则返回全部结果
      Returns:
      当前Page对象
    • getOrderBy

      public String getOrderBy()
      获取排序字段。
      Returns:
      排序字段
    • setOrderBy

      public <E> Page<E> setOrderBy(String orderBy)
      设置排序字段。
      Type Parameters:
      E - 分页数据元素类型
      Parameters:
      orderBy - 排序字段
      Returns:
      当前Page对象
    • setUnsafeOrderBy

      public <E> Page<E> setUnsafeOrderBy(String orderBy)
      不安全设置排序字段,需自行确保无SQL注入风险。
      Type Parameters:
      E - 分页数据元素类型
      Parameters:
      orderBy - 排序字段
      Returns:
      当前Page对象
    • isOrderByOnly

      public boolean isOrderByOnly()
      是否仅增加排序。
      Returns:
      是否仅增加排序
    • setOrderByOnly

      public void setOrderByOnly(boolean orderByOnly)
      设置是否仅增加排序。
      Parameters:
      orderByOnly - 是否仅增加排序
    • getDialectClass

      public String getDialectClass()
      获取分页实现类。
      Returns:
      分页实现类
    • setDialectClass

      public void setDialectClass(String dialectClass)
      设置分页实现类。
      Parameters:
      dialectClass - 分页实现类
    • getKeepOrderBy

      public Boolean getKeepOrderBy()
      获取是否保留count查询的order by排序。
      Returns:
      是否保留order by排序
    • setKeepOrderBy

      public Page<E> setKeepOrderBy(Boolean keepOrderBy)
      设置是否保留count查询的order by排序。
      Parameters:
      keepOrderBy - 是否保留order by排序
      Returns:
      当前Page对象
    • getKeepSubSelectOrderBy

      public Boolean getKeepSubSelectOrderBy()
      获取是否保留子查询的order by排序。
      Returns:
      是否保留子查询的order by排序
    • setKeepSubSelectOrderBy

      public void setKeepSubSelectOrderBy(Boolean keepSubSelectOrderBy)
      设置是否保留子查询的order by排序。
      Parameters:
      keepSubSelectOrderBy - 是否保留子查询的order by排序
    • getAsyncCount

      public Boolean getAsyncCount()
      获取是否启用异步count查询。
      Returns:
      是否启用异步count查询
    • setAsyncCount

      public void setAsyncCount(Boolean asyncCount)
      设置是否启用异步count查询。
      Parameters:
      asyncCount - 是否启用异步count查询
    • using

      public Page<E> using(String dialect)
      指定使用的分页实现。
      Parameters:
      dialect - 分页实现类,可使用PageAutoDialect注册的别名,如"mysql"、"oracle"
      Returns:
      当前Page对象
    • isCount

      public boolean isCount()
      是否执行count查询。
      Returns:
      是否执行count查询
    • setCount

      public Page<E> setCount(boolean count)
      设置是否执行count查询。
      Parameters:
      count - 是否执行count查询
      Returns:
      当前Page对象
    • pageNo

      public Page<E> pageNo(int pageNo)
      设置页码。
      Parameters:
      pageNo - 页码
      Returns:
      当前Page对象
    • pageSize

      public Page<E> pageSize(int pageSize)
      设置页面大小。
      Parameters:
      pageSize - 分页大小
      Returns:
      当前Page对象
    • count

      public Page<E> count(Boolean count)
      设置是否执行count查询。
      Parameters:
      count - 是否执行count查询
      Returns:
      当前Page对象
    • reasonable

      public Page<E> reasonable(Boolean reasonable)
      设置分页合理化开关。
      Parameters:
      reasonable - 分页合理化开关
      Returns:
      当前Page对象
    • pageSizeZero

      public Page<E> pageSizeZero(Boolean pageSizeZero)
      设置pageSizeZero开关。
      Parameters:
      pageSizeZero - 当为true时,若pageSize为0则返回全部结果
      Returns:
      当前Page对象
    • boundSqlInterceptor

      public Page<E> boundSqlInterceptor(BoundSqlBuilder boundSqlHandler)
      设置BoundSql拦截器。
      Parameters:
      boundSqlHandler - 分页拦截器
      Returns:
      当前Page对象
    • countColumn

      public Page<E> countColumn(String columnName)
      指定count查询列。
      Parameters:
      columnName - 列名
      Returns:
      当前Page对象
    • keepOrderBy

      public Page<E> keepOrderBy(boolean keepOrderBy)
      设置是否保留count查询的order by排序。
      Parameters:
      keepOrderBy - 是否保留order by排序
      Returns:
      当前Page对象
    • keepOrderBy

      public boolean keepOrderBy()
      检查是否保留count查询的order by排序。
      Returns:
      是否保留order by排序
    • keepSubSelectOrderBy

      public Page<E> keepSubSelectOrderBy(boolean keepSubSelectOrderBy)
      设置是否保留子查询的order by排序。
      Parameters:
      keepSubSelectOrderBy - 是否保留子查询的order by排序
      Returns:
      当前Page对象
    • keepSubSelectOrderBy

      public boolean keepSubSelectOrderBy()
      检查是否保留子查询的order by排序。
      Returns:
      是否保留子查询的order by排序
    • asyncCount

      public Page<E> asyncCount(boolean asyncCount)
      设置是否启用异步count查询。
      Parameters:
      asyncCount - 是否启用异步count查询
      Returns:
      当前Page对象
    • enableAsyncCount

      public Page<E> enableAsyncCount()
      启用异步count查询。
      Returns:
      当前Page对象
    • disableAsyncCount

      public Page<E> disableAsyncCount()
      禁用异步count查询。
      Returns:
      当前Page对象
    • asyncCount

      public boolean asyncCount()
      检查是否启用异步count查询。
      Returns:
      是否启用异步count查询
    • toPageInfo

      public Paginating<E> toPageInfo()
      转换为Paginating对象。
      Returns:
      Paginating对象
    • toPageInfo

      public <T> Paginating<T> toPageInfo(org.miaixz.bus.core.center.function.FunctionX<E,T> function)
      转换分页数据并返回Paginating对象。
      Type Parameters:
      T - 转换后数据类型
      Parameters:
      function - 数据转换函数
      Returns:
      Paginating对象
    • toPageSerializable

      public Serialize<E> toPageSerializable()
      转换为Serialize对象。
      Returns:
      Serialize对象
    • toPageSerializable

      public <T> Serialize<T> toPageSerializable(org.miaixz.bus.core.center.function.FunctionX<E,T> function)
      转换分页数据并返回Serialize对象。
      Type Parameters:
      T - 转换后数据类型
      Parameters:
      function - 数据转换函数
      Returns:
      Serialize对象
    • doSelectPage

      public <E> Page<E> doSelectPage(Querying select)
      执行分页查询。
      Type Parameters:
      E - 分页数据元素类型
      Parameters:
      select - 查询对象
      Returns:
      当前Page对象
    • doSelectPageInfo

      public <E> Paginating<E> doSelectPageInfo(Querying select)
      执行分页查询并返回Paginating对象。
      Type Parameters:
      E - 分页数据元素类型
      Parameters:
      select - 查询对象
      Returns:
      Paginating对象
    • doSelectPageSerializable

      public <E> Serialize<E> doSelectPageSerializable(Querying select)
      执行分页查询并返回Serialize对象。
      Type Parameters:
      E - 分页数据元素类型
      Parameters:
      select - 查询对象
      Returns:
      Serialize对象
    • doCount

      public long doCount(Querying select)
      执行count查询。
      Parameters:
      select - 查询对象
      Returns:
      总记录数
    • getCountColumn

      public String getCountColumn()
      获取count查询列名。
      Returns:
      count查询列名
    • setCountColumn

      public void setCountColumn(String countColumn)
      设置count查询列名,包含SQL注入校验。
      Parameters:
      countColumn - 列名
    • getBoundSqlInterceptor

      public BoundSqlBuilder getBoundSqlInterceptor()
      获取BoundSql拦截器。
      Returns:
      BoundSql拦截器
    • setBoundSqlInterceptor

      public void setBoundSqlInterceptor(BoundSqlBuilder boundSqlHandler)
      设置BoundSql拦截器。
      Parameters:
      boundSqlHandler - BoundSql拦截器
    • toString

      public String toString()
      返回Page对象的字符串表示。
      Overrides:
      toString in class AbstractCollection<E>
      Returns:
      字符串表示
    • close

      public void close()
      关闭Page对象,清理分页上下文。
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable