简单理解实现分页查询

举例分页:每页显示5条数据。
1、
查询 第1页: pageNum=1 pageSize=5.
(pageNum-1)*pageSize = 该页的起始位置
(1-1)*5 =0 ——> limit 0,5
0: 从第1个数据开始
5: 每页有5个数据。

select * from sys_user limit 0,5

在这里插入图片描述
2、
查询 第2页: pageNum=2 pageSize=5.
(pageNum-1)*pageSize = 该页的起始位置
(2-1)*5 =5 ——> limit 5,5
5: 从第6个数据开始
5: 每页有5个数据。

select * from sys_user limit 5,5

在这里插入图片描述
3、
查询 第3页: pageNum=3 pageSize=5.
(pageNum-1)*pageSize = 该页的起始位置
(3-1)*5 =10 ——> limit 10,5
10: 从第11个数据开始
5: 每页有5个数据。

select * from sys_user limit 10,5

在这里插入图片描述
4、简洁代码仅便于理解
template:

<template>
  <div>
      <div style="margin: 10px 0">
          <el-button type="primary" @click="load">搜索</el-button>
      </div>
      <div>
          <el-table 
            :data="tableData">
           <!-- 页面表格 -->
          </el-table>
      </div>
           <div style="padding: 10px 0">
              <el-pagination
                  @size-change="handleSizeChange"
                  @current-change="handleCurrentChange"
                  :current-page="pageNum"
                  :page-sizes="[5, 10, 15, 20]"
                  :page-size="pageSize"
                  layout="total, sizes, prev, pager, next, jumper"
                  :total="total">
              </el-pagination>
        </div>
  </div>
</template>
  

script: 当然可用axios

export default {
    data(){
        return{
            pageNum:1,
            username:'',
            pageSize:5,
            total:0,
            tableData:[],         
        }
    },
    methods:{
        load() {
        // fetch("http://localhost:9090/user/page?pageNum=" + this.pageNum + "&pageSize=" + this.pageSize + "&username=" + this.username)
        //         .then(res => res.json()).then(res => {
        //   this.tableData = res.data //数据显示在页面
        //   this.total = res.total
        // })
        request.get("http://localhost:9090/user/page" ,{
          params:{
            pageNum: this.pageNum,
            pageSize: this.pageSize,
            username: this.username
          }
        }).then(res=>{
                  this.tableData = res.records;
                  this.total = res.total;
                })
      },
      handleSizeChange(pageSize) {
        this.pageSize = pageSize
        this.load()
      },
      handleCurrentChange(pageNum) {
        this.pageNum = pageNum
        this.load()
      }
    },
    created(){
        this.load();
    }
}

controller:
没有用service。

    @GetMapping("/page")
    public Map<String, Object> findPage(@RequestParam Integer pageNum,
                                        @RequestParam Integer pageSize,
                                        @RequestParam String username) {
        pageNum = (pageNum - 1) * pageSize;//该页的起始位置
        username = "%" + username + "%";
        List<User> data = userMapper.selectPage(pageNum, pageSize, username);
        Integer total = userMapper.selectTotal(username);
        Map<String, Object> res = new HashMap<>();
        res.put("data", data);
        res.put("total", total);
        return res;
    }

mapper:

    @Select("select * from sys_user where username like #{username} limit #{pageNum}, #{pageSize}")
    List<User> selectPage(Integer pageNum, Integer pageSize, String username);
    //根据username 进行模糊查询
    @Select("select count(*) from sys_user where username like concat('%', #{username}, '%') ")
    Integer selectTotal(String username);
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值