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

    xiaoxiao2021-12-14  15

     EasyUI + PageHelper实现分页

    一、EasyUI页面分页

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

     

    表现层分析

    请求URL:/XXX/list

    请求参数:Integer pageInteger rowseasyui分页控件请求的参数),其中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时需要显示设置,单位是毫秒

     

     

    转载请注明原文地址: https://ju.6miu.com/read-964943.html

    最新回复(0)