方式一

分页前后端展示数据分析

请求参数包括页码、每页显示记录数、查询条件。
请求参数的json格式为:{currentPage:1,pageSize:10,queryString:’’itcast’’}

后台响应数据包括总记录数、当前页需要展示的数据集合。
响应数据的json格式为:{total:1000,rows:[]}
分页处理 - 图1

后台的处理方式

对前端所有的请求参数,封装成一个类QueryPageBean

  1. /**
  2. * 封装查询条件
  3. */
  4. public class QueryPageBean implements Serializable{
  5. private Integer currentPage;//页码
  6. private Integer pageSize;//每页记录数
  7. private String queryString;//查询条件
  8. public Integer getCurrentPage() {
  9. return currentPage;
  10. }
  11. public void setCurrentPage(Integer currentPage) {
  12. this.currentPage = currentPage;
  13. }
  14. public Integer getPageSize() {
  15. return pageSize;
  16. }
  17. public void setPageSize(Integer pageSize) {
  18. this.pageSize = pageSize;
  19. }
  20. public String getQueryString() {
  21. return queryString;
  22. }
  23. public void setQueryString(String queryString) {
  24. this.queryString = queryString;
  25. }
  26. }

对后台响应回前端的数据,封装为另一个类PageResult

  1. /**
  2. * 分页结果封装对象
  3. */
  4. public class PageResult implements Serializable{
  5. private Long total;//总记录数
  6. private List rows;//当前页结果
  7. public PageResult(Long total, List rows) {
  8. super();
  9. this.total = total;
  10. this.rows = rows;
  11. }
  12. public Long getTotal() {
  13. return total;
  14. }
  15. public void setTotal(Long total) {
  16. this.total = total;
  17. }
  18. public List getRows() {
  19. return rows;
  20. }
  21. public void setRows(List rows) {
  22. this.rows = rows;
  23. }
  24. }

后台分页查询的代码

1.2.1 Controller

在CheckItemController中增加分页查询方法

  1. //分页查询
  2. @RequestMapping("/findPage")
  3. public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
  4. PageResult pageResult = checkItemService.pageQuery(
  5. queryPageBean.getCurrentPage(),
  6. queryPageBean.getPageSize(),
  7. queryPageBean.getQueryString());
  8. return pageResult;
  9. }

1.2.2 服务接口

在CheckItemService服务接口中扩展分页查询方法

  1. public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString);

1.2.3 服务实现类

在CheckItemServiceImpl服务实现类中实现分页查询方法,基于Mybatis分页助手插件实现分页

  1. public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString) {
  2. PageHelper.startPage(currentPage,pageSize);
  3. Page<CheckItem> page = checkItemDao.selectByCondition(queryString);
  4. return new PageResult(page.getTotal(),page.getResult());
  5. }

1.2.4 Dao接口

在CheckItemDao接口中扩展分页查询方法

  1. public Page<CheckItem> selectByCondition(String queryString);

1.2.5 Mapper映射文件

在CheckItemDao.xml文件中增加SQL定义

  1. <select id="selectByCondition" parameterType="string"
  2. resultType="com.itheima.pojo.CheckItem">
  3. select * from t_checkitem
  4. <if test="value != null and value.length > 0">
  5. where code = #{value} or name = #{value}
  6. </if>
  7. </select>

总体结构分析
image.png