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

SSM框架整合后使用pagehelper实现分页功能的更多相关文章

  1. SSM框架整合过程总结

    -----------------------siwuxie095                                 SSM 框架整合过程总结         1.导入相关 jar 包( ...

  2. 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  3. JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合

    1. 学习计划 第一天: 1.电商行业的背景. 2.宜立方商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建-后台工程 a) 使用maven搭建工程 b) 使用maven的tomcat插件启 ...

  4. 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化

    一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...

  5. SSM框架整合模板

    SSM框架整合--MAVEN依赖 spring方面(包含了springmvc): spring-webmvc:spring与mvc的整合依赖,主要包括spring的核心包和springmvc需要的包 ...

  6. springmvc(二) ssm框架整合的各种配置

    ssm:springmvc.spring.mybatis这三个框架的整合,有耐心一步步走. --WH 一.SSM框架整合 1.1.整合思路 从底层整合起,也就是先整合mybatis与spring,然后 ...

  7. SSM框架整合搭建教程

    自己配置了一个SSM框架,打算做个小网站,这里把SSM的配置流程详细的写了出来,方便很少接触这个框架的朋友使用,文中各个资源均免费提供! 一. 创建web项目(eclipse) File-->n ...

  8. 【计理01组08号】SSM框架整合

    [计理01组08号]SSM框架整合 数据库准备 本次课程使用 MySQL 数据库.首先启动 mysql : sudo service mysql start 然后在终端下输入以下命令,进入到 MySQ ...

  9. SpringMVC详解及SSM框架整合项目

    SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...

随机推荐

  1. RabbitMQ保证消息的顺序性

    当我们的系统中引入了MQ之后,不得不考虑的一个问题是如何保证消息的顺序性,这是一个至关重要的事情,如果顺序错乱了,就会导致数据的不一致.       比如:业务场景是这样的:我们需要根据mysql的b ...

  2. Salesforce Consumer Goods Cloud 浅谈篇四之店内拜访的创建和执行

    本篇参考: https://v.qq.com/x/page/f0772toebhd.html https://v.qq.com/x/page/e0772tsmtek.html https://v.qq ...

  3. C#练习2

    using System;class Class1{ public int vlaue = 0;}class Test{ static void Main() { int v1 = 0; int v2 ...

  4. git添加新工程

    git init git remote add origin 码云路径 git pull origin master 代码拉本地后 git add . git commit -m '新添加的文件内容描 ...

  5. Qt5加载SVG格式的图片并更颜色

    QIcon MainWindow::qiconFromSvg(QString svg_path, QString color) { QPixmap img(svg_path); QPainter qp ...

  6. 『学了就忘』Linux文件系统管理 — 59、使用fdisk命令进行手工分区

    目录 1.手工分区前提 (1)要有一块新的硬盘 (2)在虚拟机中添加一块新硬盘 2.手工分区 (1)查看Linux系统所有硬盘及分区 (2)手工分区:详细步骤 (3)保存手工分区 3.硬盘格式化 4. ...

  7. Codeforces 1383E - Strange Operation(线段树优化 DP or 单调栈+DP)

    Codeforces 题目传送门 & 洛谷题目传送门 Yet another 自己搞出来的难度 \(\ge 2800\) 的题 介绍一个奇奇怪怪的 \(n\log n\) 的做法.首先特判掉字 ...

  8. LOJ 2372 -「CEOI2002」臭虫集成电路公司(轮廓线 dp)

    题面传送门 u1s1 似乎这题全网无一题解?那就由我来写篇题解造福人类罢(伦敦雾 首先看这数据范围,一脸状压.考虑到每一层的状态与上面两层有关,因此每层转移到下一层的有用信息只有两层,需要用三进制保存 ...

  9. 手写Bitset优化

    一种优化方法,具体例子可以看这里 这里只是存一下手写Bitset的板子 struct Bitset { unsigned a[1600]; void reset() { memset(a,0,size ...

  10. Linux系统的开机启动顺序

    Linux系统的开机启动顺序加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用 ...