mybatis框架---分页插件PageHelper的使用方法

以前自己写分页时,需要自己写sql语句,并且进行分页判断之后才可以实现分页

目前Mybatis提供了分页插件,使用起来非常简便,适合于各类数据库分页,只需要在配置文件中配置数据库名即可,那么mybatis的插件作用在哪一环节呢?它主要作用在Executor执行器与mappedeStatement之间,也就是说mybatis可以在插件中获得要执行的sql语句,在sql语句中添加limit语句,然后再去对sql进行封装,从而可以实现分页处理

一:首先需要引入PageHelper的jar包。

如果使用了maven,那么只要在pom.xml中引入该插件即可,引入如下:

<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
    <version>4.1.4version>
dependency>

二: 在mybatis的全局配置文件SqlMapConfig.xml中配置该插件spring-mybatis.xml是这样配置:(数据源,分页拦截器)

顺便说说数据源的配置:

对于单数据源:







多数据源:


	
		  //spring-jdbc-3.2.13.RELEASE.jar 依赖于spring对jdbc的支持
			
				
				
				
				
			
		
		
		
	



	
		
		  //定义mapper文件位置
			
				classpath*:com/ixinnuo/credit/**/mapping/**/*.xml
			
		
		  //默认包的位置
		
			
				
				
				
				
					
						
							dialect=mysql或者为oracle
							reasonable=true
          				
					
				
				   
				
			        
			          
			          	mappers=tk.mybatis.mapper.common.Mapper
			          
			        
			    
			
		
	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

我是在spring里配置的,还可以在mybatis-config.xml里配置,有兴趣的话可以百度下。

三:在执行sql前添加插件,完成分页功能  (在查询的sql语句执行之前,添加一行代码PageHelper.startPage(1, 10);

   /**
     * 开始分页  其中前两个参数是必须给的。
     *
     * @param pageNum      页码
     * @param pageSize     每页显示数量
     * @param count        是否进行count查询
     * @param reasonable   分页合理化,null时用默认配置
     * @param pageSizeZero true且pageSize=0时返回全部结果,false时分页,null时用默认配置
     */
    public static Page startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero) {
        Page page = new Page(pageNum, pageSize, count);
        page.setReasonable(reasonable);
        page.setPageSizeZero(pageSizeZero);
        SqlUtil.setLocalPage(page);
        return page;
    }

    第一个参数表示第几页,第二个参数表示每页显示的记录数。这样在执行sql后就会将记录按照语句中设置的那样进行分页。

     如果需要获取总记录数的话,需要PageInfo类的对象,这个对象可以获取总记录数、

下面看下后台实现代码,最重要的只要两句话

即在数据库查询之前告诉PageHelper开时分页:PageHelper.startPage(1, 10);)以及查询完成得到totalPage返回

mapResult.put("totalPage", ((Page)resultList).getPages());,下面为一个完整方法代码:

@RequestMapping("getAllDetail")
public void getAllDetail(HttpServletRequest req,HttpServletResponse resp,Integer pageNum){
try {
ObjectMapper mapper = new ObjectMapper();
Map mapResult = new HashMap();

Integer pageSize = 8;
if (pageNum==null) {
pageNum = 1;
}

PageHelper.startPage(pageNum, pageSize,true);

List resultList = recordService.getDetail();
mapResult.put("totalPage", ((Page)resultList).getPages());

int count =  recordService.getCount();
mapResult.put("TOTAL_COUNT",count);
mapResult.put("result", "success");
mapResult.put("detail", resultList);

                       mapper.writeValue(resp.getWriter(), mapResult);

         }

前台实现代码(自动显示分页样式):

HtML部分

                     





 







//可以直接写

标签或者在

你可能感兴趣的:(框架)

序号企业名称纳税人识别号查询时间报告编号历史报告