一、導入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)); } }