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>
}