您的位置:首页 > 产品设计 > UI/UE

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

2017-02-21 13:33 736 查看

一:简介

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其实本质上就是个过滤器,对紧跟着的查询语句会对进行页码处理后的查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息