拦截器实现分页
实际开发中,会有很多查询列表页面需要分页功能,这时分页的简单实现就不再适用,这时就需要把分页功能的共通代码分离出来,以供其他需要分页的地方使用。
【1】页面的jsp和js方法的封装(完成跳转到后台)

【2】sql的xml文件的sql语句进行封装(因为要传入Limit的参数,这里定义了两条几乎同样的sql语句,只不过是一条通过count(*)返回所有记录数,这里需要把查询所有sql语句封装)
【3】配置文件sql语句后的Limit和起始位置和返回数量的封装

【4】页面可以通过自定义标签来解决,这样每个需要分页的地方直接引入该标签即可。

原始的JDBC中Dao层的封装:
开发一个共通的方法,得到Connection对象,得到查询的sql语句,该共通方法可以根据sql语句查询出总条数(该sql语句无需截断再拼接count(*),这样容易出错。可以把该sql语句当作子查询,外面再嵌套一层sql语句),这样Page的属性就都有值了,就可以再Dao的sql语句后拼接Limit参数了。
Mybatis中Dao层的封装:
该封装的关键是sql语句在配置文件里,配置文件貌似获取不到sql参数。
Mybatis拦截器:Mybatis拦截器提供为所有页面实现分页的功能,对拦截到的都会实现分页功能(实现原理:就是拦截查询的sql语句并把它修改为分页查询的sql语句)。
在没有使用拦截器时,在执行sql之前拦截,并调用分页共通,修改的是Mybatis的源码。所以提供了拦截器,在不改变Mybatis源码的同时,可以修改源码的行为。
Mybatis执行sql语句简化版的过程:它的原理和JDBC相似,根据sql语句得到PreparedStatement对象,为该对象setObject,再执行execute方法,最后得到结果,Mybatis拦截器就是相当于在传入sql语句获得PreparedStatement对象前,修改它为分页的sql语句。
拦截器实现分页
实际开发中,会有很多查询列表页面需要分页功能,这时分页的简单实现就不再适用,这时就需要把分页功能的共通代码分离出来,以供其他需要分页的地方使用。
【1】页面的jsp和js方法的封装(完成跳转到后台)

【2】sql的xml文件的sql语句进行封装(因为要传入Limit的参数,这里定义了两条几乎同样的sql语句,只不过是一条通过count(*)返回所有记录数,这里需要把查询所有sql语句封装)
【3】配置文件sql语句后的Limit和起始位置和返回数量的封装

【4】页面可以通过自定义标签来解决,这样每个需要分页的地方直接引入该标签即可。

原始的JDBC中Dao层的封装:
开发一个共通的方法,得到Connection对象,得到查询的sql语句,该共通方法可以根据sql语句查询出总条数(该sql语句无需截断再拼接count(*),这样容易出错。可以把该sql语句当作子查询,外面再嵌套一层sql语句),这样Page的属性就都有值了,就可以再Dao的sql语句后拼接Limit参数了。
Mybatis中Dao层的封装:
该封装的关键是sql语句在配置文件里,配置文件貌似获取不到sql参数。
Mybatis拦截器:Mybatis拦截器提供为所有页面实现分页的功能,对拦截到的都会实现分页功能(实现原理:就是拦截查询的sql语句并把它修改为分页查询的sql语句)。
在没有使用拦截器时,在执行sql之前拦截,并调用分页共通,修改的是Mybatis的源码。所以提供了拦截器,在不改变Mybatis源码的同时,可以修改源码的行为。
Mybatis执行sql语句简化版的过程:它的原理和JDBC相似,根据sql语句得到PreparedStatement对象,为该对象setObject,再执行execute方法,最后得到结果,Mybatis拦截器就是相当于在传入sql语句获得PreparedStatement对象前,修改它为分页的sql语句。
理解mybatis的拦截器
mybatis拦截器需要具备的功能:
1、拦截需要拦截的操作
2、完成一种具体的功能
3、工作完成后将完成结果移交


拦截器注意事项
拦截器要做什么