前几天在这里分享了手写 sql 分页查询实现分页,现在来看看使用 mybatis 分页插件 pagehepler 来实现分页

使用分页插件的原因,简化了sql代码的写法,实现较好的物理分页,比写一段完整的分页sql代码,也能减少了误差性。

我这里使用 maven 工程实现:

1.首先导入分页插件的依赖:

com.github.pagehelper

pagehelper

5.0.0

2.配置分页拦截器插件

官方文档有两种配置分页拦截器插件

1. 在 MyBatis 配置 xml 中配置拦截器插件

2. 在 Spring 配置文件中配置拦截器插件

使用 spring 的属性配置方式,可以使用 plugins 属性像下面这样配置:

params=value1

这里我项目中使用的是第二种,里面的参数根据实际情况配置,也可以不配置

3.调用方法

mapper 层 sql 语句按照一般查询写法,不用写分页:

SELECT

id,

countryname,

countrycode

FROM

country

mapper 层接口:

/**

* 查询

* @param params

* @return

*/

public List finds();

service 业务层接口:

/**

* 分页查询

* @param params 分页参数 pageNo(页码),pageSize(每页查询数目)

* @return

*/

public PageInfo finds(Params params);

service 业务层实现类:PageHelper.startPage(1, 10);第一个参数表示第几页,第二个参数表示每页显示的记录数

执行完 PageHelper.startPage(1, 10);语句后,紧跟着的第一个select方法会被分页:List blogs = countryMapper.finds();

然后再用 PageInfo 对查询结果进行包装,PageInfo pageInfo = new PageInfo(blogs);

并将 pageInfo 返回到控制层

/**

* 查询

*/

public PageInfo finds(Params params) {

//查询

int pageNo = params.getPageNo();

int pageSize = params.getPageSize();

PageHelper.startPage(pageNo, pageSize);

List blogs = countryMapper.finds();

//用PageInfo对结果进行包装

PageInfo pageInfo = new PageInfo(blogs);

return pageInfo;

}

这里返回 pageInfo 后,在 controller 层传入 params 分页参数 和 解析 pageInfo:

List clist = pageInfo.getList(); 再将 clist  放进作用域,在前台页面利用可循环获得分页数据

/**

* 首页,并且分页查询

* @return

*/

@RequestMapping("/index")

public ModelAndView index(Params params){

ModelAndView modelAndView = new ModelAndView();

//一开始第一页,查询10条

params.setPageNo(1);

params.setPageSize(10);

PageInfo pageInfo = countryService.finds(params);

List clist = pageInfo.getList();

//查询数量

long couts = countryService.counts();

modelAndView.addObject("clist", clist);

modelAndView.addObject("couts", couts);

modelAndView.setViewName("index");

return modelAndView;

}

上面说的都是关键分页的实现代码,现在看看全部配置和实现的代码:

pom.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.krry

maven_pagehepler_ora

war

1.0-SNAPSHOT

maven_pagehepler_ora

http://maven.apache.org

UTF-8

${basedir}/src/main/java

com.isea533.mybatis.mapper

com.isea533.mybatis.model

${basedir}/src/main/resources

mapper

1.6

3.3.1

3.3.6

5.0.0

5.1.29

4.1.2.RELEASE

1.2.4

junit

junit

4.11

test

log4j

log4j

1.2.17

javax.servlet

servlet-api

2.5

provided

javax.servlet.jsp

jsp-api

2.1

provided

javax.servlet

jstl

1.2

javax.ws.rs

javax.ws.rs-api

2.0

javax.websocket

javax.websocket-api

1.0

javax.annotation

javax.annotation-api

1.2

javax.transaction

javax.transaction-api

1.2

org.springframework

spring-context

org.springframework

spring-orm

org.springframework

spring-oxm

org.springframework

spring-jdbc

org.springframework

spring-tx

org.springframework

spring-web

org.springframework

spring-webmvc

org.springframework

spring-aop

org.springframework

spring-test

org.codehaus.castor

castor-xml

1.3.3

com.fasterxml.jackson.core

jackson-databind

2.4.2

com.fasterxml.jackson.dataformat

jackson-dataformat-xml

2.4.2

org.aspectj

aspectjweaver

1.8.2

commons-fileupload

commons-fileupload

1.3.1

mysql

mysql-connector-java

${mysql.version}

com.alibaba

druid

1.0.11

org.mybatis

mybatis

${mybatis.version}

org.mybatis

mybatis-spring

${mybatis.spring.version}

org.mybatis.generator

mybatis-generator-core

1.3.2

compile

true

com.github.pagehelper

pagehelper

${pagehelper.version}

tk.mybatis

mapper

${mapper.version}

org.apache.commons

commons-lang3

3.3.2

org.springframework

spring-framework-bom

${spring.version}

pom

import

nexus

local private nexus

http://maven.oschina.net/content/groups/public/

true

false

sonatype-nexus-releases

Sonatype Nexus Releases

http://oss.sonatype.org/content/repositories/releases

true

false

sonatype-nexus-snapshots

Sonatype Nexus Snapshots

http://oss.sonatype.org/content/repositories/snapshots

false

true

org.apache.maven.plugins

maven-compiler-plugin

3.2

1.7

1.7

applicationContext.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util-3.0.xsd

">

init-method="init" destroy-method="close">

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

mybatis-config.xml

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

springmvc.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:util="http://www.springframework.org/schema/util"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

">

text/plain;charset=UTF-8

text/html;charset=UTF-8

NON_NULL

application/json;charset=UTF-8

application/x-www-form-urlencoded;charset=UTF-8

jdbc.properties 和 log4j.properties 就不用展示了,都差不多的

web.xml

maven_pagehepler

index/index

contextConfigLocation

classpath:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

org.springframework.web.util.IntrospectorCleanupListener

encoding

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

encoding

/*

maven_pagehepler

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc.xml

maven_pagehepler

/index/index

maven_pagehepler

/

实体类:Country.java

package com.krry.entity;

public class Country {

/**

* 主键

*/

private Integer id;

/**

* 名称

*/

private String countryname;

/**

* 代码

*/

private String countrycode;

public Country(Integer id, String countryname, String countrycode) {

this.id = id;

this.countryname = countryname;

this.countrycode = countrycode;

}

/**

* 获取主键

*

* @return Id - 主键

*/

public Integer getId() {

return id;

}

/**

* 设置主键

*

* @param id 主键

*/

public void setId(Integer id) {

this.id = id;

}

/**

* 获取名称

*

* @return countryname - 名称

*/

public String getCountryname() {

return countryname;

}

/**

* 设置名称

*

* @param countryname 名称

*/

public void setCountryname(String countryname) {

this.countryname = countryname;

}

/**

* 获取代码

*

* @return countrycode - 代码

*/

public String getCountrycode() {

return countrycode;

}

/**

* 设置代码

*

* @param countrycode 代码

*/

public void setCountrycode(String countrycode) {

this.countrycode = countrycode;

}

}

Params.java

package com.krry.entity;

/**

*

* Params

* @author krry

* @version 1.0.0

*

*/

public class Params {

private Integer pageSize = 10;

private Integer pageNo = 0;

public Integer getPageNo() {

return pageNo;

}

public void setPageNo(Integer pageNo) {

this.pageNo = pageNo;

}

public Integer getPageSize() {

return pageSize;

}

public void setPageSize(Integer pageSize) {

this.pageSize = pageSize;

}

}

持久层:CountryMapper.java

package com.krry.mapper;

import java.util.List;

import com.krry.entity.Country;

/**

*

* Mapper:操作数据库

* @author krry

* @version 1.0.0

*

*/

public interface CountryMapper {

/**

* 查询

* @param params

* @return

*/

public List finds();

/**

* 计算

* com.krry.dao.admin

* 方法名:countBlogs

* @author krry

* @param params

* @return int

* @exception

* @since 1.0.0

*/

public long counts();

}

CountryMapper.xml

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT

id,

countryname,

countrycode

FROM

country

SELECT

count(*)

FROM

country

业务层接口:

package com.krry.service;

import java.util.HashMap;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.annotations.Param;

import com.github.pagehelper.PageInfo;

import com.krry.entity.Country;

import com.krry.entity.Params;

/**

* service层:处理业务逻辑(impl里面实现)

* @author asusaad

*

*/

public interface ICountryService {

/**

* 分页查询所有博客

* @param params 分页参数 pageNo(页码),pageSize(每页查询数目)

* @return

*/

public PageInfo finds(Params params);

/**

* 计算博客数量

* @param params

* @return

*/

public long counts();

}

业务层实现类

package com.krry.service.impl;

import java.util.HashMap;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.web.servlet.ModelAndView;

import com.github.pagehelper.PageHelper;

import com.github.pagehelper.PageInfo;

import com.krry.entity.Country;

import com.krry.entity.Params;

import com.krry.mapper.CountryMapper;

import com.krry.service.ICountryService;

/**

* 实现service层接口

* @author asusaad

*

*/

@Service

public class CountryService implements ICountryService{

@Autowired

private CountryMapper countryMapper;

/**

* 查询

*/

public PageInfo finds(Params params) {

//查询

int pageNo = params.getPageNo();

int pageSize = params.getPageSize();

PageHelper.startPage(pageNo, pageSize);

List blogs = countryMapper.finds();

//用PageInfo对结果进行包装

PageInfo pageInfo = new PageInfo(blogs);

return pageInfo;

}

/**

* 计算

* @param params

* @return

*/

public long counts(){

long couts = countryMapper.counts();

return couts;

}

}

控制层:KrryController.java

package com.krry.controller;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import org.junit.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.servlet.ModelAndView;

import com.github.pagehelper.PageInfo;

import com.krry.entity.Country;

import com.krry.entity.Params;

import com.krry.service.ICountryService;

/**

* KrryController

* controller层,作为请求转发

* @author asusaad

*

*/

@Controller //表示是多例模式,每个用户返回的web层是不一样的

@RequestMapping("/index")

public class KrryController {

@Autowired

private ICountryService countryService;

/**

* 首页,并且分页查询

* @return

*/

@RequestMapping("/index")

public ModelAndView index(Params params){

ModelAndView modelAndView = new ModelAndView();

//一开始第一页,查询10条

params.setPageNo(1);

params.setPageSize(10);

PageInfo pageInfo = countryService.finds(params);

List clist = pageInfo.getList();

//查询数量

long couts = countryService.counts();

modelAndView.addObject("clist", clist);

modelAndView.addObject("couts", couts);

modelAndView.setViewName("index");

return modelAndView;

}

/**

* ajax请求 的 分页查询

* @param params

* @return

*/

@ResponseBody

@RequestMapping("/loadData")

public HashMap loadData(Params params){

HashMap map = new HashMap();

PageInfo pageInfo = countryService.finds(params);

List clist = pageInfo.getList();

map.put("clist", clist);

return map;

}

//

}

SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询

前言:本文档使用的是 SpringBoot,如果是 Spring 还需要在 MyBatis 配置 xml 中配置拦截器,并且 PageHelper 是针对 MyBatis 的,MyBatis 的集成不 ...

ssm下使用分页插件PageHelper进行分页

1. 导入maven依赖: com.github.pagehelper

SSM整合 mybatis多条件查询与分页

多条件查询与分页: 通过页面的houseName.floorage获取值传到前端视图(HouseSearchVO)实体类中的houseName,floorage建立houseSearchVO对象. 通 ...

PageHelper分页插件及通用分页js

分页概述 1.物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果. ...

JSP分页之结合Bootstrap分页插件进行简单分页

结合Bootstrap的分页插件实现分页,其中策略是每次显示5个按钮,然后根据当前页的不同来进行不同的显示: 1. 当前页<3,如果当前页大于5页就显示前五页,不然就显示1~totalPage. ...

SpringBoot入门篇--整合mybatis&plus;generator自动生成代码&plus;druid连接池&plus;PageHelper分页插件

原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...

基于Mybatis分页插件PageHelper

基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择

rethat安装MySQL多例_SSM 使用 mybatis 分页插件 pagehepler 实现分页相关推荐

  1. rethat安装MySQL多例_Spring框架-Bean作用域中单例模式和多例模式的区别

    Spring框架-Bean作用域中单例模式和多例模式的区别 一.单例模式的特点(当没有指定是单例模式还是多例模式的时候,默认是单例模式): 1.Spring容器创建的时候,对应的类的实例化对象一起被创 ...

  2. mybatis常用分页插件,快速分页处理

    在未分享整个查询分页的执行代码之前,先了解一下执行流程. 1.总体上是利用mybatis的插件拦截器,在sql执行之前拦截,为查询语句加上limit X X 2.用一个Page对象,贯穿整个执行流程, ...

  3. easyui 分页 + mybatis 分页插件 PageHelper 完成分页显示功能(SpringMVC + mybatis 框架)

    1.使用 easyUI datagrid 完成前台分页展示 <table id="dg" title="产品管理" style="width:7 ...

  4. mysql router docker_Docker 安装 Mysql 详解

    本文将以完整的安装 MySQL 为例将 镜像与 容器 操作完全串联起来 环境说明 系统为 CentOS 7.5 发行版,内核为 3.10 版本,Docker 为 1.13 版本 [root@local ...

  5. 本地虚拟机上的docker安装mysql_Linux虚拟机上安装docker,并使用docker安装mysql,tomcat...

    1.序言 现在在Linux虚拟机上安装程序,越来越多的人都使用docker完成,本次就记录下在虚拟机上安装docker的过程. 如果你的windows系统上还没有安装Linux虚拟机,请参考我的上一篇 ...

  6. Myeclipse中安装mybatis generator插件有两种方式,一种是在线安装,一种是离线安装。

    一.在线安装:Help------>MyEclipse Configuration Center,选择add site,填入MyBatis generator插件的地址: http://myba ...

  7. 都这么卷了,不懂MyBatis插件开发怎么行,教你实现一个MyBatis分页插件

    MyBatis可谓是Java开发工程师必须要掌握的持久层框架,它能够让我们更容易的通过Java代码操作数据库,并且它还有很高的扩展性,我们可以自定义插件,去让MyBatis的功能变的更为强大,本篇文章 ...

  8. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    我们这一一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我 ...

  9. MyBatis复习(八):MyBatis 分页插件 PageHelper

    PageHelper是国人开源的一款MyBatis扩展插件,可以帮助完成自动分页功能.PageHelper自动分页插件使用非常简单,如果持久层框架用的是MyBatis,建议使用该分页插件. 引入分页插 ...

  10. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

最新文章

  1. 两张照片重叠处半透明_手机可以“抛起来”拍照,给你的照片换个角度
  2. 谈谈图像的style transfer(二)
  3. 基于ZooKeeper的Dubbo简单抽样登记中心
  4. 计算机网络实验3:网络设备基本配置
  5. 在CodeBlocks上配置OpenGL问题
  6. 直方图绘制与直方图均衡化实现
  7. javascript 对象比较是否属于同一类型对象。
  8. django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...
  9. ppt2003 未找到 mathpagewll 53_steam每日特惠:《伊拉图斯:死之主》今日史低53元
  10. C#设计模式(20)——策略者模式(Stragety Pattern)
  11. 用c语言编写linux守护进程
  12. 项目管理实践之版本控制工具SVN在Windows平台下的平台搭建
  13. executor-cores参数并未对vcores生效的原因分析
  14. c截取字符串中的一部分_2019年!史上最全Python基础题(50道题详解)持续更新中-第二篇...
  15. Python数据分析U3-matplotlib可视化高级
  16. JAVA-----集合子接口Queue及其子接口Deque
  17. Android屏幕适配全攻略3-和产品经理聊聊
  18. 【DXP】更换原理图模板的方法
  19. python图像纹理提取_提取图像的颜色、纹理特征(传统算法)
  20. Python 爬虫-抓取小说《鬼吹灯之精绝古城》

热门文章

  1. 利用HtmlAgilityPack库进行HTML数据抓取
  2. android:layout_weight属性详解 (转)
  3. MDT错误之日志查看方法
  4. 有关top命令中的%st,sar命令中的%steal .
  5. python改变默认编码
  6. 证书激励法——VBA课程第二次讨论2007年12月6日
  7. 沈志勇:中国式营销三部曲
  8. for语句嵌套执行顺序_Python基础教程(四):循环语句
  9. 怪事总是发生我身上,铜证如山
  10. 简单的解决办法,复杂的分析工作