分页

作者: 想吃热干面了 | 来源:发表于2019-01-11 23:48 被阅读0次

    分页的原理

    1.计算总记录数
    2.计算总页数
    3.显示区间段的记录 即每页的数据

    Mybatis在Dao层实现分页

    使用拦截器在Dao层对mapper.xml文件中的sql进行拦截并将分页的的sql拼接上去,最后将拼接好的新的sql返回去。

    什么是拦截器?

    举个简单的例子:

    比如说买票,可以自己去车站买,也可以找中间人去帮忙买,这里可以把这个中间人当作一个拦截器.中间人接收我的委托,去车站买票,买完后给我,这是一个常规的流程. 我自已去买票是Mybatis的正常流程,我找人代买票就是属于利用拦截器在Mybatis中添加了自己的行为,但同样达到了目的.

    由此,总结出拦截其要做什么?

    1.要实现拦截
    2.拦截下来做什么事
    3.事情做完后要交回主权

    我们可以自定义拦截器实现拼接sql的步骤:

    1自定义拦截器 注解

    @Intercepts({}):标记当前的类是一个拦截器
    @Signature(type=StatementHandler.class,method="prepare",args=
    {Connection.class}
    @Signature:标记了当前的拦截器只会拦截 StatementHandler(接口)中
    的 prepare方法
    因为这个方法的参数是 Connection类型的,所以需要使用args=
    {Connection.class}来指定参数的类型

    2继承Intercepetor接口,并重写其中的intercept方法,
    首先要获取到mapper.xml,然后获取到要sql语句的id
    判断id是否需要拦截
    如需拦截,获取到sql语句,计算总的记录数,然后就是执行jdbc
    重写分页的sql,将执行权交给下一个拦截器,如没有,则返回
    具体代码如下:


    image.png
    image.png

    以上就是自定义分页拦截器中的操作。

    配置好拦截器后,要配置一个page.tag文件,分页的自定义标签库

    image.png

    代码如下,这就是在网页上显示的分页格式:


    image.png

    在jsp页面引入这个自定义标签库:


    image.png
    image.png

    当然,还有一些配置以及依赖

    Mybatis.xml中添加如下代码
    image.png
    在com.foreknow.util中要创建一个Page类,并设置分页需要的一些属性,代码如下:
    image.png

    还要写一个计算总记录数的方法


    image.png

    然后就是属性生成的getter和setter


    image.png

    相关文章

      网友评论

          本文标题:分页

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