mysql分页插件springboot_springboot + mybatis 分页插件(Pagehelper)

方法一:使用pagehelper-spring-boot-starter的形式(最简单和通用的方式)

使用步骤:

(1)在pom.xml文件中引入依赖库

com.github.pagehelper

pagehelper-spring-boot-starter

1.2.3

(2)在application.properties中添加分页配置

# 配置pageHelper分页插件的内容

pagehelper.helper-dialect=mysql

pagehelper.reasonable=true

pagehelper.support-methods-arguments=true

pagehelper.params=count=countSql

或者在application.yml文件中添加分页配置

pagehelper:

helperDialect: mysql

reasonable: true

supportMethodsArguments: true

params: count=countSql

(3)进行使用。(可以在controller层或者service层使用即可)

/**

* 查询所有的person内容

* @return

*/

@RequestMapping(value = "/list")

public String jumpJsp(Map result){

PageHelper.startPage(3 , 3);

List personList = personService.findPerson();

//得到分页的结果对象

PageInfo personPageInfo = new PageInfo<>(personList);

//得到分页中的person条目对象

List pageList = personPageInfo.getList();

//将结果存入map进行传送

result.put("pageInfo" , pageList);

return "person_list";

}

解析:

(1)PageHelper.startPage(pageNum , pageSize),这个方法就是类似我们数据库操作的limit start , count

(2)得到的对象PageInfo里面包含很多的字段信息,这个可以自己看源码,非常详细

(3)如果我们只想得到分页处理之后我们的实体对象的结果,那么就调用PageInfo对象的getList()方法即可。

(4)这种配置使用的方式是最通用的方式,也就是对于环境搭建不同方式都可以利用这种使用方法。

问题:如果运行时出现,org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration': 这个错误。

解决办法:这是由于分页插件pagehelper的版本和mybatis不兼容的原因,修改分页插件的版本即可。

方法二:使用最原始的形式(SpringBoot+Mybatis配置文件的形式,也就是整合环境还是利用xml的形式搭建的,但是都是通过@configuration注解开发类)

使用步骤:

(1)在pom.xml文件中,添加分页插件的依赖(注意和第一种方法的区别)

com.github.pagehelper

pagehelper

4.1.6

(2)在mybatis的配置文件中添加如下的插件

(3)在controller或者service层进行使用插件

/**

* 查询所有的person内容

* @return

*/

@RequestMapping(value = "/list")

public String jumpJsp(Map result){

PageHelper.startPage(1 , 5);

List personList = personService.findPerson();

//得到分页的结果对象

PageInfo personPageInfo = new PageInfo<>(personList);

//得到分页中的person条目对象

List pageList = personPageInfo.getList();

//将结果存入map进行传送

result.put("pageInfo" , pageList);

return "person_list";

}

分析:对于这种方法的话,适用于对整合环境还是通过mybatis.xml的形式,所以,这种是具有针对性的一种情况。

方法三:使用最原始的方式(SpringBoot+Mybatis搭建中,Mybatis是利用在application.properties进行设置,并且mapper文件的操作还是使用.xml形式编写的sql语句,而非mapper注解编写)

使用步骤:

(1)在pom.xml文件中添加分页插件的依赖

com.github.pagehelper

pagehelper

4.1.6

(2)添加下面一个类

package com.hnu.scw.config;

import com.github.pagehelper.PageHelper;

import org.apache.ibatis.plugin.Interceptor;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**

* @ Author :scw

* @ Date :Created in 下午 2:48 2018/6/17 0017

* @ Description:用于配置分页插件的使用

* @ Modified By:

* @Version: $version$

*/

@Configuration

public class PgeHeplerConfig {

//将分页插件注入到容器中

@Bean

public PageHelper pageHelper() {

//分页插件

PageHelper pageHelper = new PageHelper();

Properties properties = new Properties();

properties.setProperty("reasonable", "true");

properties.setProperty("supportMethodsArguments", "true");

properties.setProperty("returnPageInfo", "check");

properties.setProperty("params", "count=countSql");

pageHelper.setProperties(properties);

//添加插件

new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});

return pageHelper;

}

}

或者如下的代码:

package com.hnu.scw.config;

import com.github.pagehelper.PageHelper;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**

* @ Author :scw

* @ Date :Created in 下午 2:48 2018/6/17 0017

* @ Description:用于配置分页插件的使用

* @ Modified By:

* @Version: $version$

*/

@Configuration

public class PgeHeplerConfig {

//将分页插件注入到容器中

@Bean

public PageHelper pageHelper() {

//分页插件

PageHelper pageHelper = new PageHelper();

Properties properties = new Properties();

properties.setProperty("reasonable", "true");

properties.setProperty("supportMethodsArguments", "true");

properties.setProperty("helperDialect", "mysql");

properties.setProperty("params", "count=countSql");

pageHelper.setProperties(properties);

return pageHelper;

}

}

还可以直接在springboot的启动类添加下面的代码即可。(其实都一样的道理,因为上面的类都是用了@Configuration注解配置了的,也就是添加到了容器中)

//将分页插件注入到容器中

@Bean

public PageHelper pageHelper() {

//分页插件

PageHelper pageHelper = new PageHelper();

Properties properties = new Properties();

properties.setProperty("reasonable", "true");

properties.setProperty("supportMethodsArguments", "true");

properties.setProperty("helperDialect", "mysql");

properties.setProperty("params", "count=countSql");

pageHelper.setProperties(properties);

return pageHelper;

}

(3)直接使用

/**

* 查询所有的person内容

* @return

*/

@RequestMapping(value = "/list")

public String jumpJsp(Map result){

PageHelper.startPage(1 , 5);

List personList = personService.findPerson();

//得到分页的结果对象

PageInfo personPageInfo = new PageInfo<>(personList);

//得到分页中的person条目对象

List pageList = personPageInfo.getList();

//将结果存入map进行传送

result.put("pageInfo" , pageList);

return "person_list";

}

情景二:Spring+SpringMVC+Mybatis+Maven环境

使用步骤:(其实这个就类似情景一种的方式二,换汤不换药)

(1)在pom.xml中添加分页插件的依赖

com.github.pagehelper

pagehelper

4.1.6

(2)在mybatis中的配置文件SqlMapConfig.xml(这个名字是你自己搭建环境所取的,就是配置一些关于Mybatis的配置文件)添加分页插件。

(3)在controller层或者service实现层中使用分页。

/**

* 查询所有的person内容

* @return

*/

@RequestMapping(value = "/list")

public String jumpJsp(Map result){

PageHelper.startPage(1 , 8);

List personList = personService.findPerson();

//得到分页的结果对象

PageInfo personPageInfo = new PageInfo<>(personList);

//得到分页中的person条目对象

List pageList = personPageInfo.getList();

//将结果存入map进行传送

result.put("pageInfo" , pageList);

return "person_list";

}

总结:

(1)pagehelper插件本身就是基于Mybatis这种框架进行开发的插件。所以,主要都是针对Mybatis数据操作的架构的。

(2)上面描述了多种情况的具体配置方式,都是自身经过实际开发编写的,而且对于不同的情景,各位要理解为什么要这样,这虽然只是讲解了分页插件的使用,当遇到其他插件的时候,都可以类似进行处理。

(3)如果是用到的SSH(Spring+SpringMVC+Hibernate)或者SpringBoot+Hibernate这样的架构的时候,这个插件是无法使用的,就需要自己通过hibernate的形式进行处理,比如可以用HQL语法或者Criteria进行处理即可。毕竟,Hibernate是一种全自动化的数据库操作框架。

下面的内容,是关于原始方式实现分页效果,仅供各位进行参考(其中是通过实例来帮助大家进行分析)

实现方法一:通过自定义分页标签(JSP)

分页,这个功能,我想在很多的系统中,都有用到过吧。这已经是非常非常普通的应用功能了,所以就需要将这个功能能自定义为一个jsp标签的话,那就肯定很方便了。所以下面就说一下,如果实现这个功能。

步骤:

(1)写两个Java类,其中Page,很简单就是一个分页对象,然后NavigationTag这个就是自定义标签的核心映射类了(如果对于这个自定义标签的流程不是很清楚的话,可以看看我之前写的J2EE的知识点中的内容,都很详细介绍了)。

Page:

package com.hnuscw.common.utils;

import java.util.List;

public class Page {

private int total;

private int page;

private int size;

private List rows;

public int getTotal() {

return total;

}

public void setTotal(int total) {

this.total = total;

}

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

}

public int getSize() {

return size;

}

public void setSize(int size) {

this.size = size;

}

public List getRows() {

return rows;

}

public void setRows(List rows) {

this.rows = rows;

}

}

Navigation:

package com.hnuscw.common.utils;

import java.io.IOException;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值