Mybatis的plugin实现原理
下图黑色部分为之前方式,红色部分为使用插件后
实现通用分页组件
如果想要将现有的select语句改为支持分页功能的查询语句该怎么做呢?最简单的一种做法就是将所有的select语句都加上limit来实现分页,这种做法有什么问题呢?
1、要改动的地方非常多,而且每个sql改动逻辑基本上一致;
2、DAO层的查询逻辑要改动,要在原来查询之后执行查询 SELECT count(1) from ….. 查询数据总条数。
有没有一种简便方法实现呢?
1、要改动的地方非常多,而且每个sql改动逻辑基本上一致;
2、DAO层的查询逻辑要改动,要在原来查询之后执行查询 SELECT count(1) from ….. 查询数据总条数。
有没有一种简便方法实现呢?
Mybatis提供了plugin机制,允许我们在Mybatis的原有处理流程上加入自己逻辑,所有我们就可以使用这种逻辑加上我们的分页逻辑,也就是实现拦截器。
Mybatis支持的拦截的接口有4个, Executor、ParameterHandler、ResultSetHandler、StatementHandler。
使用PageHelper实现分页
PageHelper实现了通用的分页查询,其支持的数据有,mysql、Oracle、DB2、PostgreSQL等主流的数据库。
该插件托管于github: h
该插件托管于github: h