一、分页插件:
1) 插件机制 插件机制 :
Mybatis 通过插件 (Interceptor) 可以做到拦截四大对象相关方法的执行 ,根据需求 成相关数据的动态改变。
Executor
StatementHandler
ParameterHandler
ResultSetHandler
2) 插件原理 插件原理
四大对象的每个在创建时,都会执行 四大对象的每个在创建时,都会执行 interceptorChain.pluginAll(),会经过每个插 件对象的plugin()方法,目的是为当前的四大对象创建代理。代理对象就可以拦截到四大对象相关方法的执行,因为要执行四大对象的方法需要经过代理。
分页插件:
com.baomidou.mybatisplus.plugins.PaginationInterceptor
方法一:在mybatis配置文件中配置插件
<configuration> <!--分页插件--> <plugins> <plugin interceptor="com.baomidou.mybatisplus.plugins.PaginationInterceptor"></plugin> </plugins> </configuration>
方法二:在sqlSessionFactoryBean中配置:
<!--插件--> <property name="plugins"> <list> <!-- 注册分页插件 --> <bean class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"></bean> </list> </property>
案例:
public void testPage(){ Page page=new Page(1,1); List<User> users=userMapper.selectPage(page,null); System.out.println(users); System.out.println("===============获取分页相关的一些信息======================"); System.out.println("总条数:" +page.getTotal()); System.out.println("当前页码: "+ page.getCurrent()); System.out.println("总页码:" + page.getPages()); System.out.println("每页显示的条数:" + page.getSize()); System.out.println("是否有上一页: " + page.hasPrevious()); System.out.println("是否有下一页: " + page.hasNext()); //将查询的结果封装到page对象中可以直接返回page对象 page.setRecords(users); }