使用MyBatis-PageHelper + vue实现分页

使用MyBatis-PageHelper实现分页,前端使用vue

PageHelper分页

附上MyBatis-PageHelper地址:
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

1、Maven添加依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>最新版本</version>
</dependency>

2、在MyBatis的配置文件中添加插件

具体参数看官方文档

<!--
        plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
        properties?, settings?,
        typeAliases?, typeHandlers?,
        objectFactory?,objectWrapperFactory?,
        plugins?,
        environments?, databaseIdProvider?, mappers?
    -->
    <plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
            <!-- 指定使用mysql -->
            <property name="helperDialect" value="mysql"/>
            <!-- 分页合理化 -->
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>

3、编写获得PageInfo对象的接口

    /**
     * 获得分页对象,里面封装了分页需要用到的所有信息
     * @param pageNum 当前第几页
     * @param pageSize 每页几个数据
     * @return 返回分页数据
     */
    @RequestMapping(value = "pageInfo", method = RequestMethod.GET)
    @ResponseBody
    public PageInfo<TProduct> getPageInfo(int pageNum, int pageSize) {
        //1.通过调用 PageHelper 的静态方法开始获取分页数据
        //指定当前第几页以及每页显示的条数
        PageHelper.startPage(pageNum, pageSize);

        //2.获得所有的商品记录
        List<TProduct> list = productService.getList();

        //3.获得当前分页对象
        PageInfo<TProduct> pageInfo = new PageInfo<TProduct>(list);

        return pageInfo;
    }

4、测试接口

以下是接口返回的 json字符串


{
    "total": 12,
    "list": [
        {
            "id": 1,
            "name": "HUAWEI P30",
            "image": "aaa",
            "price": 5299,
            "salePrice": 3899,
            "salePoint": "好看,买它",
            "typeId": 1,
            "typeName": "mobile phone",
            "flag": true,
            "createTime": "2020-10-04 04:51:05",
            "updateTime": "2020-10-07 04:51:24",
            "createUser": 1,
            "updateUser": 1
        },
        {
            "id": 2,
            ...
        },
        {
            "id": 3,
            ...
        },
        {
            "id": 4,
            ...
        },
        {
            "id": 5,
            ...
        }
    ],
    "pageNum": 1,
    "pageSize": 5,
    "size": 5,
    "startRow": 1,
    "endRow": 5,
    "pages": 3,
    "prePage": 0,
    "nextPage": 2,
    "isFirstPage": true,
    "isLastPage": false,
    "hasPreviousPage": false,
    "hasNextPage": true,
    "navigatePages": 8,
    "navigatepageNums": [1,2,3],
    "navigateFirstPage": 1,
    "navigateLastPage": 3
}

前端使用Pagination组件

1、导入Pagination的内容

1、components/Pagination
2、utils/scroll-to

2、在页面中使用Pagination

total: 记录的总条数
listQuery.page: 当前是第几页
listQuery.limit: 每页显示的数量
getList(): 当前页的所有数据
1、在template中

<pagination v-show="total>0" :total="total" :page.sync="listQuery.page"
	:limit.sync="listQuery.limit" @pagination="getList" />

2、在script中注册Pagination,并生明相应的参数(total、limit……)

components: { Pagination },
  data() {
    return {
      list: [],
      total: 0,
      listQuery: {
        limit: 10,
        page: 1
      }
    }
  }

3、声明getList函数,用于获取后端提供的PageInfo对象,该对象封装了分页所需的所有数据

created() {
    // this.fetchData();
    this.getList();
  },
  methods: {
    getList() {
      //得到一个PageInfo对象
      var that = this;
      this.axios({
        method: 'GET',
        url: 'http://localhost:8081/product/pageInfo?pageNum=' +that.listQuery.page+'&pageSize=' + that.listQuery.limit
      }).then(function(resp) {
        //得到一个PageInfo对象
        //将PageInfo中的total赋值给当前的total
        that.total = resp.data.total;
        //当前页显示的所有数据
        that.list = resp.data.list;
      }, function(err) {
        console.log(err);
      })
    }

实现效果:

在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SSM(Spring + SpringMVC + MyBatis)是一种常用的Java开发框架组合,而Vue是一种流行的前端框架,可以很好地实现前后端分离。如何在SSM和Vue实现分页功能呢?下面我来详细解答。 1. 后端实现: 针对后端的实现,我们使用SSM框架进行开发,主要涉及SpringMVC和MyBatis使用。 (1) 在SpringMVC的控制层中,接收前端传递的分页参数(如当前页码、每页显示数量),然后调用MyBatis查询数据库,获取分页数据。 (2) 使用MyBatis分页插件(如PageHelper),在查询语句中添加分页相关的参数,并使用插件提供的方法进行分页查询。 (3) 将查询结果封装成一个分页实体(如Page类),包括总记录数、当前页码、总页数以及当前页数据等信息。 (4) 将分页实体返回给前端,前端可以通过解析获取到的数据,进行页面的展示和分页的渲染等。 2. 前端实现: 针对前端的实现,我们使用Vue框架进行开发,主要涉及Vue的组件和数据绑定。 (1) 在Vue的组件中定义分页组件,包括分页样式和点击事件等,通过v-model等指令将页码和每页显示数量绑定到Vue实例的数据中。 (2) 在Vue实例中设置监听分页参数的变化,当分页参数变化时,重新发送请求获取对应页码的数据,并更新到Vue实例的数据中。 (3) 在Vue模板中根据返回的数据进行页面展示,可以使用v-for指令进行遍历展示每一条数据,并使用v-if指令进行分页处理,显示当前页数据。 通过以上步骤,我们可以实现SSM和Vue分页功能。后端通过SpringMVC接收分页参数,使用MyBatis进行数据库查询,并封装成分页实体返回给前端。前端通过Vue进行数据绑定和页面展示,根据返回的数据进行分页处理。这样,我们就可以在页面中实现分页功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值