美文网首页
利用Datagrid做数据分页

利用Datagrid做数据分页

作者: 二枚目 | 来源:发表于2018-10-29 16:33 被阅读78次

EasyUI最常用的的数据网格 datagrid 控件 pagination 属性设置为 true 后,控件的底部就自带了总数、页数、每页多少行等数据的显示,但是需要我们后台来返回相关数据给前端让 datagrid 来显示和调整,在分页功能里面,前端传入后台的数据有:rows(每页多少行)、page(当前显示第几页),后台需要返回前端的数据有:total(总数)、data(本页需要显示的数据)。

实现过程:
这里使用之前写的人员管理系统来实现人员信息显示的分页效果,后台框架使用SpringBoot整合Mybatis,分页实现流程如下
1、前端准备:前端将 datagrid 控件的 pagination 和 rownumbers 属性设置为 true;
2、分页数据:Controller层的查询方法里,从request里获取page和rows,这里page需要自减并乘以rows,运算完将两者添加进查询map里;Service层和Dao层不变,Dao的实现Mapper.xml里,查询的select里末尾加上一句SQL:order by pid asc limit #{from},#{rows}; (表示从第from个数据开始查询rows个数据,from即page的自减乘rows);
3、数据总数:Service 和 Dao 层新增方法 getTotal(Map<String, Object> map) ,实现Mapper.xml里新写一个select count获取数据总数。Controller 层声明Integer total = Service.getTotal(map);并返回数据和total;

具体代码(Controller层):

@RequestMapping("/search")
    public String searchEmp(HttpServletRequest request) {
        Map<String, Object> map = new HashMap<String, Object>();
        String name = request.getParameter("name");
        String sex = request.getParameter("sex");
        String rows = request.getParameter("rows");//多少行
        String page = request.getParameter("page");//页
        int pageNum = (Integer.parseInt(page)-1)*Integer.parseInt(rows);
        int from = pageNum > 1?pageNum:0;
        int row = Integer.parseInt(rows);
        map.put("name", name);
        map.put("sex", sex);
        map.put("from", from);
        map.put("rows", row);
        Integer total=0;
        
        total= employeeService.getTotal(map);
        List<Employee> list = employeeService.getEmployees(map);
        String jsonString = JSONArray.toJSONString(list);
        String data = "{\"total\":"+total+",\"rows\":"+jsonString+"}";
        return data;
    }

Mapper.xml(第一个select是根据页面和每页多少行查询数据并封装到实体数组中返回,第二个select是查询总数):

    <select id="getEmployees" resultType="Employee" parameterType="Map">
        SELECT p_employee_id pid,name,sex,birthday,idcard,phone,address,photo FROM t_employee WHERE active=1
        <if test="name!=null">
            and name like CONCAT(#{name}, '%')
        </if>
        <if test="sex!=null and '' != sex">
            and sex = #{sex}
        </if>
        <if test="1 == 1">
            and 1=1
        </if>
        order by pid asc limit #{from},#{rows};
    </select>
    <select id="getTotal" resultType="int" parameterType="Map">
        SELECT count(p_employee_id) FROM t_employee WHERE active=1
        <if test="name!=null">
            and name like CONCAT(#{name}, '%')
        </if>
        <if test="sex!=null and '' != sex">
            and sex = #{sex}
        </if>
        <if test="1 == 1">
            and 1=1
        </if>
    </select>

具体效果如图:

图片.png 左下角选择每页显示10行并切换到最后一页: 图片.png 项目代码已更新至Github:https://github.com/zhaozsh/employee_ssm

相关文章

  • 利用Datagrid做数据分页

    EasyUI最常用的的数据网格 datagrid 控件 pagination 属性设置为 true 后,控件的底部...

  • easyui

    easyui 的简单使用 引入js库 加载功能菜单 切换主题 datagrid 分页展示数据 非空校验 添加之前先...

  • jquery easyui datagrid 分页 详解

    前些天用jquery easyui的table easyui-datagrid做分页显示的时候,折腾了很久,后来终...

  • EasyUI实现带搜索框的列表页面(一)——前台实现

    基本思路 引入EasyUI资源 Datagrid组件实现初始化列表分页数据加载 用form将搜索条件收集后转成js...

  • lunem与Laravel之利用Redis做分页

    分页场景:在平常我们都是利用数据库做分页,但在高并发,数据库可能就不能承载这样的压力,在高并发的场景下其实是不允许...

  • easyui datagrid + easypoi 导出 Exc

    1.easyui datagrid 有个方法getRows 获取到当前datagrid 显示的所有数据 2.通过j...

  • Django中如何自定义分页模块

    阅读目录当数据库中数据有很多,我们通常会在前端页面做分页展示。 分页的数据可以在前端页面实现,也可以在后端实现分页...

  • 数据库理论

    数据来源于:_Caesar 1.mysql如何做分页 mysql数据库做分页用limit关键字,然后后面跟两个参数...

  • List数据内存分页

    内存分页 我们常常要对List数据切分和分页,最近客户要求我们调用第三方接口拿到所有数据然后做分页返回给他 们,全...

  • technology-integration(六)---AOP实

    AOP实现分页有什么好处 利用AOP实现分页功能可以达到零代码入侵的目的,只需要在请求方法上传入对应的分页请求数据...

网友评论

      本文标题:利用Datagrid做数据分页

      本文链接:https://www.haomeiwen.com/subject/wgjbtqtx.html