浅谈JavaWeb分页功能

今天帮别人改项目的时候,突然发现别人做的项目整个数据查询出来回显给前台看着怪怪的,总感觉少了点什么。
仔细和之前做过的项目对比后发现回显数据并没有做分页。而且他的小项目并没有引入像simplePaging那样的jquery前端插件。故此开一篇关于分页功能的文章希望对别人能起到给予思路的功能。

分页逻辑浅析

为什么我们要用分页?答:因为当内部数据过多的时候,如果全在一页显示,人们看着不免困倦,页面也不够美观。而解决方法也就此出现了–分页
我们就来单纯的讲讲逻辑。简单的想,我们首先设计的时候想一页我们要显示多少条数据,这里以我这手头的举例,管理员显示用户每页十位,这里就有两种方法。

  1. 一次性从后台将数据全部打包封装好传给前面,让前面根据你的从0到9以此展示,每一页的上一页下一页按键负责操作这个0到9的循环里的初始位置。
  2. 每次根据你当前的页码,返回页码给后台让后台查询相应位置的0到9条数据,再回显给前台。
    这两种方法各有优劣势,前者可以减少多次访问数据库的访问压力,后者能每次读取少量数据,减少缓存内部使用。
    然后我使用的是第二种,第一种可以根据上面的思路编写代码,而且仅写js部分就行。这里贴一下第二种实现方法的代码。

Controller层代码:

    /**
     * 管理员分页显示所有用户
     * ------测试通过
     * 
     * @return
     * @author: admin
     */
    @ResponseBody
    @RequestMapping(value = "getPageUser.action", method = RequestMethod.POST)
    public Object getPageUser(HttpServletRequest req) {
        JSONObject jsonObject = new JSONObject();
        //这是对整张表中用户数量/每页数量向上取整给于前端的总页数
        jsonObject.put("total", (int) Math.ceil((double) userService.countUser() / 10));
        //因为数据中第一页存放的其实是0-9的顺序,所以起始位要-1再乘10
        jsonObject.put("userList", userService.getPageUser((Integer.parseInt(req.getParameter("page")) - 1) * 10));
        return jsonObject;
    }

Mapper.xml部分代码:(用limit控制输出多少条以及从哪儿开始)

    <select id="getPageUser" resultMap="BaseResultMap" parameterType="java.lang.Integer">
    select
    *
    from user
    limit #{num,jdbcType=INTEGER},10
  </select>

Service层想必大家都会,就是把Controller给的参数传给dao层。然后就是关于js部分的分页实施,我用了一个别人写好的jquery插件,初始化的时候给予总页码和当前页码即可。效果图这里我贴出来,具体代码我就不贴了,有需要这个分页插件的可以联系我的邮箱tzysz1997@163.com。
在这里插入图片描述
然后作为一个萌新,肯定还有很多不足的地方。也有很多更优解我没想到,这里只是提供一下我个人的想法,如果能对你有所帮助我就很开心啦:)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值