Java类:team.bangbang.common.data.Pagination

一、相关方法说明

Pagination类用于保存、传递分页参数,其中的属性包括: 1. recordCount 总记录数 2. maxResults 相当于pageSize,每一页的最大记录条数,默认使用team.bangbang.common.config.Constants.PAGE_SIZE值 3. pageNo 当前页号,从1开始。 3. pageCount 只读,根据recordCount和maxResult计算得到的总页数 4. startPosition 只读,当前页需要的记录在数据库中的起始位置,从0开始 5. dataSort 排序对象,类型为team.bangbang.common.data.DataSort

详情参见Java doc文档。

二、使用示例

Pagination可以从请求中获得分页数据,然后传递到数据库操作层,在数据库操作层使用分页参数,比如Mybatis:

public interface IMapper<T> {
    // ....

    /**
     * 查询多条记录,并转化为相应的POJO对象列表
     *
     * @param where      更新条件,不能为null
     * @param appendix   附加限定条件
     * @param pagination 分页参数,如果分页参数为空,表示不分页
     * @return 返回结果记录,并转化为相应的POJO对象列表
     */
    List<T> list(@Param("where") T where, @Param("appendix") String appendix, @Param("pagination") Pagination pagination);
    // ....
}

MyBatis配置文件(MySQL数据库,其它数据库仿照拼合形成分页限定):

    <!-- 查询多条组织机构信息 -->
    <select id="list" resultMap="organizationMap">
        SELECT ... FROM basis_organization_base T1
        ...
        <if test="pagination != null">
            limit #{pagination.startPosition}, #{pagination.maxResults}
        </if>
    </select>
}

Java类:team.bangbang.common.data.DataSort

一、相关方法说明

DataSort类用于保存、传递排序参数,其中的属性包括: 1. fieldName 排序字段 2. direction 排序方向,可选值:DataSort.ASC、DataSort.DESC

详情参见Java doc文档。

二、使用示例

DataSort通过封装在Pagination对象中传递数据,同样从请求中获得排序参数,然后传递到数据库操作层,在数据库操作层使用分页参数,比如Mybatis:

public interface IMapper<T> {
    // ....

    /**
     * 查询多条记录,并转化为相应的POJO对象列表
     *
     * @param where      更新条件,不能为null
     * @param appendix   附加限定条件
     * @param pagination 分页参数,如果分页参数为空,表示不分页
     * @return 返回结果记录,并转化为相应的POJO对象列表
     */
    List<T> list(@Param("where") T where, @Param("appendix") String appendix, @Param("pagination") Pagination pagination);
    // ....
}

MyBatis配置文件(MySQL数据库,其它数据库仿照拼合形成分页限定):

    <!-- 查询多条组织机构信息 -->
    <select id="list" resultMap="organizationMap">
        SELECT ... FROM basis_organization_base T1
        ...
        <if test="pagination == null or pagination.dataSort == null or pagination.dataSort.fieldName == null">
            ORDER BY T1.sort
        </if>
        <if test="pagination != null and pagination.dataSort != null and pagination.dataSort.fieldName != null">
            ORDER BY ${pagination.dataSort.fieldName}
            <if test="pagination.dataSort.direction == 1">ASC</if>
            <if test="pagination.dataSort.direction == -1">DESC</if>
        </if>
        ...
    </select>
}