zoukankan      html  css  js  c++  java
  • SSM框架整合后使用pagehelper实现分页功能

    一、导入pagehelper-5.1.10.jar和jsqlparser-3.1.jar两个jar包

    二、配置pagehelper

    2.1 在mybatis配置文件中配置

    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
        </plugin>
    </plugins>

    2.2 在spring配置文件中配置

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="plugins">
               <array>
                   <bean class="com.github.pagehelper.PageInterceptor">
                   </bean>
               </array>
           </property>
    </bean>

    三、在已经实现mybatis连接数据库进行查询的前提下,修改service实现类的代码,修改如下:

    package com.yh.service.impl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import com.github.pagehelper.PageHelper;
    import com.yh.entity.Comment;
    import com.yh.mybatis.mapper.CommentMapper;
    import com.yh.service.CommentService;
    
    @Service("commentService")
    public class CommentServiceImpl implements CommentService {
    
        @Autowired
        private CommentMapper commentMapper;
    
        @Override
        public List<Comment> findCommentByBookId(int bookId) {
            // TODO Auto-generated method stub
            PageHelper.startPage(1, 3);
            List<Comment> comments = commentMapper.findCommentByBookId(bookId);
    //        Page<Comment> page = (Page<Comment>) comments;
            return comments;
        }
    
    }

    黄色背景为添加代码,这是最简单的实现方式这是最简单的,两个参数分别是查找页数和每页长度。

    四、其他方式(待补充)

    package com.cjs.example.service.impl;
    
    import com.cjs.example.dao.CouponMapper;
    import com.cjs.example.model.Coupon;
    import com.cjs.example.model.CouponExample;
    import com.cjs.example.service.CouponService;
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.github.pagehelper.PageRowBounds;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class CouponServiceImpl implements CouponService {
    
        @Autowired
        private CouponMapper couponMapper;
    
        /**
         * 静态方法startPage
         */
        @Override
        public List<Coupon> getCouponListByPage(CouponExample couponExample, Integer pageNum, Integer pageSize) {
            //  在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
            //  只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的
            PageHelper.startPage(pageNum, pageSize);
            return couponMapper.selectByExample(couponExample);
        }
    
        /**
         * 分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>
         * 因为  public class Page<E> extends ArrayList<E> implements Closeable
         */
        @Override
        public Page<Coupon> getCouponListByPage1(CouponExample couponExample, Integer pageNum, Integer pageSize) {
            PageHelper.startPage(pageNum, pageSize);
            List<Coupon> list = couponMapper.selectByExample(couponExample);
            if (null != list) {
                Page<Coupon> page = (Page<Coupon>) list;
                System.out.println(page);
                return page;
            }
            return null;
        }
    
        /**
         * 用PageRowBounds
         */
        @Override
        public List<Coupon> getCouponListByPage2(CouponExample couponExample, Integer pageNum, Integer pageSize) {
            PageRowBounds pageRowBounds = new PageRowBounds(pageNum, pageSize);
            List<Coupon> couponList = couponMapper.selectByExample(couponExample, pageRowBounds);
    
            System.out.println(pageRowBounds.getTotal());
    
            Page<Coupon> page = (Page<Coupon>) couponList;
            System.out.println(page);
    
            return couponList;
        }
    
        @Override
        public Page<Coupon> getCouponListByPage3(CouponExample couponExample, Integer pageNum, Integer pageSize) {
            Page<Coupon> page = PageHelper.startPage(pageNum, pageSize).doSelectPage(()->couponMapper.selectByExample(couponExample));
            System.out.println(page);
            return page;
        }
    
        /**
         * 方法参数
         */
        @Override
        public PageInfo<Coupon> getCouponListByPage4(CouponExample couponExample, Integer pageNum, Integer pageSize) {
            PageInfo<Coupon> pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(()->couponMapper.selectByExample(couponExample));
            System.out.println(pageInfo);
            return pageInfo;
        }
    
        /**
         * PageInfo
         */
        @Override
        public PageInfo<Coupon> getCouponListByPage5(CouponExample couponExample, Integer pageNum, Integer pageSize) {
            List<Coupon> list = couponMapper.selectByExample(couponExample);
            if (null == list) {
                return null;
            }
            PageInfo<Coupon> pageInfo = new PageInfo<>(list);
            System.out.println(pageInfo);
            return pageInfo;
        }
    
        @Override
        public Page<Coupon> getCouponListByPage6(CouponExample couponExample, Integer offset, Integer limit) {
            return (Page<Coupon>) couponMapper.selectByExample(couponExample, new PageRowBounds(offset, limit));
        }
    }
  • 相关阅读:
    SET NOCOUNT ON 作用
    C# WinForm控件之Dock先后顺序调整
    Sql查询按某字段值排序
    sql server 中DateName()函数及DatePart()函数
    js的字符串代码库及讲解
    js实现字符串格式的日期加一天
    1、用datetimepicker插件实现限定时间范围的选择 2、时间插件实现默认当天的时间和只能选择小于今天的日期
    js判断开始时间不能小于结束时间
    vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题
    js对json格式对象进行增加,修改,删除
  • 原文地址:https://www.cnblogs.com/YeHuan/p/11911498.html
Copyright © 2011-2022 走看看