zoukankan      html  css  js  c++  java
  • SpringBoot+Vue之分页操作

    springboot--表格操作02

    不建议使用mybatis自带的分页查询,或pagehelper插件等,使用MySql查询语句更方便快捷。

    以上一篇表格操作为基础,加入分页操作,完善核心代码。上篇详情CRUD与文件导入导出

    流程

    后端开发

    1、定义分页查询统一返回的实体类,返回数据为列表,建议使用泛型。

    (RespPageEntity.java)

    1.  
      @Data
    2.  
      public class RespPageEntity {
    3.  
      private List<?> data;
    4.  
      private Long total;
    5.  
      }
    6.  
      复制代码

    2、定义控制层方法,为避免空值,请求参数中给与默认值。

    (UserController.java)

    1.  
      /**
    2.  
      * 根据页码和大小分页查询
    3.  
      * @param page 当前页,默认为1
    4.  
      * @param size 当前每页显示行数,默认为5
    5.  
      * @return 页信息的实体
    6.  
      */
    7.  
      @GetMapping("/page/")
    8.  
      public RespPageEntity getAllUserByPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "5") Integer size) {
    9.  
      return userService.getAllUserByPage(page, size);
    10.  
      }
    11.  
      复制代码

    3、业务层方法,分为两步,1获取数据总量,2获取查询页信息,因此要加上事务注解@Transactional。

    (UserService.java)

    1.  
      @Transactional
    2.  
      public RespPageEntity getAllUserByPage(Integer page, Integer size) {
    3.  
      RespPageEntity pageEntity = new RespPageEntity();
    4.  
      // 默认从0开始
    5.  
      if (page != null && size != null) {
    6.  
      page = (page-1)*size;
    7.  
      }
    8.  
      // 获取当前也用户信息
    9.  
      List<User> users = userMapper.getAllUserByPage(page, size);
    10.  
      pageEntity.setData(users);
    11.  
      // 获取当前用户总量
    12.  
      Long total = userMapper.getTotal();
    13.  
      pageEntity.setTotal(total);
    14.  
      return pageEntity;
    15.  
      }
    16.  
      复制代码

    4、映射文件中的sql语句。

    (UserMapper.xml)

    1.  
      <select id="getAllUserByPage" resultMap="BaseResultMap">
    2.  
      select
    3.  
      *
    4.  
      FROM
    5.  
      userinfo
    6.  
      limit #{page}, #{size}
    7.  
      </select>
    8.  
      <select id="getTotal" resultType="java.lang.Long">
    9.  
      select count(*) from userinfo;
    10.  
      </select>
    11.  
      复制代码

    5、postman测试,如地址http://127.0.0.1:8081/user/page/返回默认值或http://127.0.0.1:8081/user/page/?page=1&size=5

    前端完善

    1、template临时组件中加入分页的div(User.vue)

    1.  
      <div style="display: flex;justify-content: center;margin-top: 10px">
    2.  
      <el-pagination
    3.  
      background
    4.  
      @size-change="sizeChange"
    5.  
      @current-change="currentChange"
    6.  
      :current-page="currentPage"
    7.  
      :page-size="pageSize"
    8.  
      layout="sizes, prev, pager, next, jumper, ->, total, slot"
    9.  
      :total="total">
    10.  
      </el-pagination>
    11.  
      </div>
    12.  
      复制代码

    2、初始值

    1.  
      pageSize:5,
    2.  
      currentPage:1,
    3.  
      total:0,
    4.  
      复制代码

    3、每页显示的数量和当前页码

    1.  
      sizeChange(size) {
    2.  
      this.pageSize=size;
    3.  
      this.initUser();
    4.  
      },
    5.  
      currentChange(page) {
    6.  
      this.currentPage=page;
    7.  
      this.initUser();
    8.  
      },
    9.  
      复制代码

    4、修改初始化页面方法

    1.  
      initUser() {
    2.  
      this.getRequest("/user/page/?page="+this.currentPage+"&size="+this.pageSize).then(resp => {
    3.  
      if (resp) {
    4.  
      this.userinfo=resp.data;
    5.  
      this.total=resp.total;
    6.  
      }
    7.  
      })
    8.  
      }
    9.  
      复制代码

    运行后效果图

    转载于:https://juejin.im/post/5cc5a1e5518825253f4a5a7d

     
  • 相关阅读:
    Java基础知识之设计模式--观察者模式
    Java基础知识之设计模式--工厂模式
    Java Socket应用
    Java基础知识之设计模式--单例模式
    Docker的三种网络代理配置
    Docker被禁了!只能靠它了......
    老司机带你出坑:请收下这份运维故障处理指南
    这样理解 HTTP,面试再也不用慌了~
    为什么说卷积神经网络,是深度学习算法应用最成功的领域之一?
    一文搞懂CDN加速原理
  • 原文地址:https://www.cnblogs.com/javalinux/p/14809010.html
Copyright © 2011-2022 走看看