MyBatis 拦截器(3)

分页拦截器的实现思路:code

a)   咱们但愿在原始查询语句执行前,对语句进行变动,加上limit 0,10相似的语句。Mybatis在执行Sql以前会产生Statement对象,因此咱们能够在它生成Statement对象前对Sql语句改造。对象

b)   在Mybatis中Statement语句是经过RoutingStatementHandler对象的prepare方法生成的。分页拦截器的思路就是拦截StatementHandler接口的prepare方法,在拦截器方法中把Sql语句改形成分页查询Sql语句,而后再调用StatementHandler对象的prepare方法,也就是调用invocation.proceed()。接口

c)   作分页固然须要先统计出记录的总数,而后计算出总共有多少页。因此,在拦截器里面还须要统计知足当前查询条件的记录一共有多少。这就须要在获取到原始的Sql语句后,修改成对应的统计语句好比:select count(*) from tablename,以后再执行该记录统计的Sql语句进行总记录数的查询。get

相关文章
相关标签/搜索