SSM-分页显示列表

思路分析

1.后台使用MyBatis PageHelper插件完成分页查询;前端使用分页组件
2.修改FurnController,增加处理分页显示代码
3.完成前台代码,加入分页导航,并将分页请求和后台接口结合
4.简单回顾JavaWeb原生项目的分页模型。


一、 配置Mybatis PageHelper

  1. 引入分页插件
    <!--引入mybatis pageHelper分页插件-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.2.1</version>
    </dependency>
  1. 修改mybatis-config.xml,配置分页拦截器
    <!--说明
    1. plugins标签需要放在typeAliases标签后,是doctype约束的
    2. 配置分页拦截器
    -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--属性解读
            配置分页合理化
            1. 如果用户请求的pageNum > pages , 就显示查询最后一页
            2. 如果用户请求的pageNum < 0 , 就显示查询第一页
            -->
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>
  1. 修改FurnController.java增加分页查询处理。前2步配置完成后,就在controller里面开始使用了。
  • controller层
    • 使用@RequestParam接收参数,是因为它可以指定默认值。
    /**
     * 分页请求接口
     * @param pageNum:  要显示第几页 : 默认为1
     * @param pageSize: 每页要显示几条记录:默认为5
     */
    @ResponseBody
    @RequestMapping("/furnsByPage")
    public Msg listFurnsByPage(@RequestParam(defaultValue = "1") Integer pageNum,
                               @RequestParam(defaultValue = "5") Integer pageSize) {

        //设置分页参数
        //1.调用findAll是完成查询,底层会进行物理分页(指在SQL层面完成分页),而不是逻辑分页(返回全部数据,在本地分页显示)
        //2.会根据分页参数来计算 limit ?, ?, 在发出SQL语句时,会带limit
        PageHelper.startPage(pageNum, pageSize);

        List<Furn> furnList = furnService.findAll();


        //将分页查询的结果,封装到PageInfo
        //PageInfo 对象包含了分页的各个信息,比如当前页面pageNum , 共有多少记录
        //...

        PageInfo pageInfo = new PageInfo(furnList, pageSize);
        //将pageInfo封装到Msg对象,返回
        return Msg.success().add("pageInfo", pageInfo);
    }
  • 测试:使用postman测试,不带参数,不带body,查看是否正确返回。

二、前端配置分页导航栏

样式选择All combined,并根据需要增删属性。其中total="total"要修改。
- 将currentPage、pageSize、total放入数据池。

    <div style="margin:10px 0">
      <!--  ":"是"v-model :",双向绑定的缩写。注释不能写在标签里面-->
      <el-pagination
          v-model:current-page="currentPage"
          :page-size="pageSize"
          :page-sizes="[5, 10, 15]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
      />
    </div>

  methods: {
    handleSizeChange(size){
      this.pageSize=size;
      this.list();
    },
    handleCurrentChange(pageNum){
      //console.log("pageNum",pageNum)
      this.currentPage=pageNum;
      this.list();
    }
    }

带条件的查询分页显示列表

思路分析
1.完成后台代码从dao->serivce->controller,并对每层代码进行测试
2.完成前端代码,使用axios发送http请求,完成带条件查询分页显示

后端

  • service
    public List<Furn> selectByName(String name) {
        FurnExample furnExample = new FurnExample();
        FurnExample.Criteria criteria = furnExample.createCriteria();
        if(StringUtils.hasText(name)) {
            criteria.andNameLike("%" + name + "%");
        }
        return furnMapper.selectByExample(furnExample);
    }
  • controller
@RequestMapping("/conditionpage")
    @ResponseBody
    public Msg page(@RequestParam(defaultValue = "1") Integer pageNum,
                    @RequestParam(defaultValue="5") Integer pageSize,
                    @RequestParam(defaultValue="") String name){
        PageHelper.startPage(pageNum,pageSize);
        List<Furn> furnList = furnService.selectByName(name);
        PageInfo pageInfo = new PageInfo(furnList, pageSize);
        return Msg.success().add("pageInfo",pageInfo);
    }

前端

重写list
<el-button style=“margin-left:20px” type=“primary” @click=“list”>检索

list(){
      //添加检索条件的分页显示
      request.get(
          "/api/conditionpage",{
          params:{
            pageNum:this.currentPage,
            pageSize:this.pageSize,
            name:this.search
          }
      }).then(res=>{
        this.tableData=res.extend.pageInfo.list
        this.total=res.extend.pageInfo.total
      })
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值