rethat安装MySQL多例_SSM 使用 mybatis 分页插件 pagehepler 实现分页
前几天在这里分享了手写 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+generator自动生成代码+druid连接池+PageHelper分页插件
原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...
基于Mybatis分页插件PageHelper
基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择
rethat安装MySQL多例_SSM 使用 mybatis 分页插件 pagehepler 实现分页相关推荐
- rethat安装MySQL多例_Spring框架-Bean作用域中单例模式和多例模式的区别
Spring框架-Bean作用域中单例模式和多例模式的区别 一.单例模式的特点(当没有指定是单例模式还是多例模式的时候,默认是单例模式): 1.Spring容器创建的时候,对应的类的实例化对象一起被创 ...
- mybatis常用分页插件,快速分页处理
在未分享整个查询分页的执行代码之前,先了解一下执行流程. 1.总体上是利用mybatis的插件拦截器,在sql执行之前拦截,为查询语句加上limit X X 2.用一个Page对象,贯穿整个执行流程, ...
- easyui 分页 + mybatis 分页插件 PageHelper 完成分页显示功能(SpringMVC + mybatis 框架)
1.使用 easyUI datagrid 完成前台分页展示 <table id="dg" title="产品管理" style="width:7 ...
- mysql router docker_Docker 安装 Mysql 详解
本文将以完整的安装 MySQL 为例将 镜像与 容器 操作完全串联起来 环境说明 系统为 CentOS 7.5 发行版,内核为 3.10 版本,Docker 为 1.13 版本 [root@local ...
- 本地虚拟机上的docker安装mysql_Linux虚拟机上安装docker,并使用docker安装mysql,tomcat...
1.序言 现在在Linux虚拟机上安装程序,越来越多的人都使用docker完成,本次就记录下在虚拟机上安装docker的过程. 如果你的windows系统上还没有安装Linux虚拟机,请参考我的上一篇 ...
- Myeclipse中安装mybatis generator插件有两种方式,一种是在线安装,一种是离线安装。
一.在线安装:Help------>MyEclipse Configuration Center,选择add site,填入MyBatis generator插件的地址: http://myba ...
- 都这么卷了,不懂MyBatis插件开发怎么行,教你实现一个MyBatis分页插件
MyBatis可谓是Java开发工程师必须要掌握的持久层框架,它能够让我们更容易的通过Java代码操作数据库,并且它还有很高的扩展性,我们可以自定义插件,去让MyBatis的功能变的更为强大,本篇文章 ...
- SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件
我们这一一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我 ...
- MyBatis复习(八):MyBatis 分页插件 PageHelper
PageHelper是国人开源的一款MyBatis扩展插件,可以帮助完成自动分页功能.PageHelper自动分页插件使用非常简单,如果持久层框架用的是MyBatis,建议使用该分页插件. 引入分页插 ...
- (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示
http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...
最新文章
- 两张照片重叠处半透明_手机可以“抛起来”拍照,给你的照片换个角度
- 谈谈图像的style transfer(二)
- 基于ZooKeeper的Dubbo简单抽样登记中心
- 计算机网络实验3:网络设备基本配置
- 在CodeBlocks上配置OpenGL问题
- 直方图绘制与直方图均衡化实现
- javascript 对象比较是否属于同一类型对象。
- django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...
- ppt2003 未找到 mathpagewll 53_steam每日特惠:《伊拉图斯:死之主》今日史低53元
- C#设计模式(20)——策略者模式(Stragety Pattern)
- 用c语言编写linux守护进程
- 项目管理实践之版本控制工具SVN在Windows平台下的平台搭建
- executor-cores参数并未对vcores生效的原因分析
- c截取字符串中的一部分_2019年!史上最全Python基础题(50道题详解)持续更新中-第二篇...
- Python数据分析U3-matplotlib可视化高级
- JAVA-----集合子接口Queue及其子接口Deque
- Android屏幕适配全攻略3-和产品经理聊聊
- 【DXP】更换原理图模板的方法
- python图像纹理提取_提取图像的颜色、纹理特征(传统算法)
- Python 爬虫-抓取小说《鬼吹灯之精绝古城》