栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM使用mybatis分页插件pagehepler实现分页示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM使用mybatis分页插件pagehepler实现分页示例

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

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

Mybatis分页插件 demo 项目地址:free-Mybatis_PageHelper_jb51.rar

我这里使用 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 层接口:


public List finds();

service 业务层接口:

 
 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 放进作用域,在前台页面利用可循环获得分页数据

 @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


 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


 
 
 
  
 
 

  
 
 
   
   
   
   
 
 
 
 
  
 

 
 
 
 
 
  
  
  
  
   
    
     
     
      

      
     
    
   
  
 
 
 
 
  
  
  
 
 


mybatis-config.xml

 
 

 
  
    
   
    
   
   
   
   
   
   
   
   
   
    
   
   
   
    
   
   
  
 
 
  
  
  
  
  

springmvc.xml



 
   
   
  
   
   
    
     
       
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 
       
     
    
     
  
  
   
     
   
  
  
  
package com.krry.entity;

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;

public interface CountryMapper {

 
 public List finds();
 
 
 public long counts(); 
}

CountryMapper.xml



 
 
 
  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;

public interface ICountryService {
 
 
 public PageInfo finds(Params params);
 
 
 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
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;
  
 }
 
 
 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;

@Controller //表示是多例模式,每个用户返回的web层是不一样的
@RequestMapping("/index")
public class KrryController {
 
 @Autowired
 private ICountryService countryService;
 
 
 @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;
 }
 
 
 @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;
 }
//  
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/141374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号