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

【JAVA秒会技术之玩转高效分页】EasyUI + PageHelper实现分页

2016-12-02 16:16 676 查看
 EasyUI + PageHelper实现分页
一、EasyUI页面分页

页面逻辑:页面初始化时,通过jquery easyui的DataGrid(数据表格)的url属性异步加载,返回指定的json格式数据,在通过pagination属性,展示分页工具栏。
 


表现层分析:
请求URL:/XXX/list
请求参数:Integer pageInteger rows(easyui分页控件请求的参数),其中page默认为1。
返回数据:json格式的数据(easyui分页控件请求的返回值JSON数据),格式如下:

{total:“2”,rows:[
      {“id”:”1”,”name”:”张三”},
      {“id”:”2”,”name”:”李四”}
]}
==>  再将Json对应的数据格式封装成POJO类DatagridResult。
   业务逻辑分析
根据page和rows分页查询条件,使用分页插件PageHelper进行分页查询。
将商品列表和记录总数封装到PO类对象中,并且将其转化为Json格式返回。

二、PageHelper数据库分页

mybatis分页插件PageHelper目前支OracleMysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。

分页原理:

 



使用方法:

第一步:dao层的pom文件中添加pagehelper依赖

<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>1.0</version>
</dependency>

第二步:在Mybatis配置SqlMapConfig.xml中配置拦截器插件

<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库方言 -->
<property name="dialect" value="mysql" />
</plugin>
</plugins>

第三步:将Json对应的数据格式封装成POJO类DatagridResult并实现序列化接口

public class DatagridResult implements Serializable{
private long total;// 记录总数
private List rows; // 记录集合
}

第五步:开发Service层,主要逻辑:Ø 第四步:开发Dao层,使用逆向工程生成代码;

@Override
public DatagridResult queryItemList(Integer page, Integer rows) {
if (page == null)
page = 1;
if (rows == null)
rows = 30;
// 1.设置分页信息
PageHelper.startPage(page, rows);
// 2.执行查询
TbItemExample example = new TbItemExample();
List<TbItem> list = mapper.selectByExample(example);
// 3.获取分页查询后的数据
PageInfo<TbItem> pageInfo = new PageInfo<>(list);
// 4.封装结果对象,并返回
DatagridResult result = new DatagridResult();
result.setTotal(pageInfo.getTotal()); //设置总记录数
result.setRows(list); //设置每页展示数据集合
return result;
}

 第六步:开发Controller层,主要逻辑:

@RequestMapping("/list")
@ResponseBody
public DatagridResult list(@RequestParam(defaultValue= "1") Integer page, Integer rows) {
return service.queryItemList(page, rows);
}

三、超时及警告问题解决

    原因:通过分页插件得到的结果,其实是List的子类Page(该类由分页插件提供),而该类只在服务层,表现层没有该类,在反序列化的时候,抛出该警告,不影响使用

 


    发布服务时,服务默认的响应时间为1秒,debug时需要显示设置,单位是毫秒

 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息