SSM+easyUI结合Mybatis-PageHelper实现分页功能

一:简介

Mybatis-PageHelper是一个大神在github上得开源项目,作者博客:http://my.csdn.net/isea533。说明及使用文档 https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

二:整合ssm以及代码使用

很详细的说明以及用法,参数的配置,每个方法的详细介绍都在文档里面。https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

三:案例:

1:pom依赖

<!-- 分页插件 -->
		<dependency>
    		<groupId>com.github.pagehelper</groupId>
   			 <artifactId>pagehelper</artifactId>
   			 <version>5.0.0</version>
		</dependency>

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

bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath*:config/mapper/*"></property>
    
    <property name="plugins">
   	 	<array>
      		<bean class="com.github.pagehelper.PageInterceptor">
        		<property name="properties">
          		<!--使用下面的方式配置参数,一行配置一个 -->
          		<value>
            		helperDialect=oracle
            		reasonable=true
                    	supportMethodsArguments=true
                   	params=count=countSql
                    	autoRuntimeDialect=true
          		</value>
      		    </property>
     		 </bean>
  		  </array>
  	</property>
  
  </bean>

3.代码使用

前台js
$(function(){
	changeByPager(1,5);
	var pager = $("#dgzd").datagrid("getPager");  
	if(pager)  
	{  
	   $(pager).pagination({  
	       onBeforeRefresh:function(){  
	           alert('刷新前。。。。');  
	    },  
	       onRefresh:function(pageNumber,pageSize){  
	        },  
	       onChangePageSize:function(pageNumber,pageSize){  
	    	   /* alert(pageSize);
	    	   changeByPager(1,pageSize)  ; */
	        },  
	       onSelectPage:function(pageNumber,pageSize){  
	            changeByPager(pageNumber,pageSize); 
	        }  
	   });  
	}   
})

/**
 * ajax 向后台传递参数,根据不同分页的格式刷新数据格
 */
function  changeByPager(pageNumber,pageSize){
	console.log(pageNumber);
	console.log(pageSize);
	 $.ajax({
	 		type : "POST",
	 		url : "order/changeByPager",
	 		data :{
	 			"data":JSON.stringify({
					"pageNumber":pageNumber ,
					"pageSize":pageSize
				})
	 		},
	 		success : function(data) {
	 			$("#dgzd").datagrid("loadData",data);
	 		}
	 	});   
}




后台代码:
@RequestMapping(value="/changeByPager",method = RequestMethod.POST,produces=MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
	public JSONObject changeByPager(String data) throws JsonParseException, JsonMappingException, IOException{
		Pages pages= mapper.readValue(data, new TypeReference<Pages>() { });
		int page = Integer.parseInt(pages.getPageNumber()) ;
		int rows =Integer.parseInt(pages.getPageSize()) ; 
		 Map<String, Object> map = new HashMap<String, Object>();
		List<Order> listAll = orderService.getAllforAdmin( ) ;
		map.put("total", listAll.size());//total键 存放总记录数,必须的  
		PageHelper.startPage(page,rows);
		List<Order> listPage = orderService.getAllforAdmin( ) ;
		map.put("rows", listPage);//rows键 存放每页记录 list   		
		return JSONObject.fromObject(map);
	}

Pages类(主要是为了接收前台传来的两个参数):
public class Pages {
	private String pageNumber ;
	private String pageSize ;
	public String getPageNumber() {
		return pageNumber;
	}
	public void setPageNumber(String pageNumber) {
		this.pageNumber = pageNumber;
	}
	public String getPageSize() {
		return pageSize;
	}
	public void setPageSize(String pageSize) {
		this.pageSize = pageSize;
	}
	
}

4.问题解析

(1)前台传来的参数

第一个是每页显示数据的数量(rows)。第二个是当前页码(page);
从后台的controller中获取这两个参数,再无论是通过pageHelper插件还是自己写分页的sql都特别的简单了。

pageHelper其实本质上就是个过滤器,对紧跟着的查询语句会对进行页码处理后的查询。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值