Mybatis分页插件PageHelper的学习与使用
目录
2.各个情况下xml的配置
情况一
:如果是mybatis单独使用PageHelper分页插件的时候,就需要在xml配置中添加如下代码:<!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers? --> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugins> <!-- 使用下面的方式配置参数,推荐的两个项目中有所有的参数介绍 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="param1" value="value1"/> </plugin> </plugins>
情况二
:显然,我是这个是ssm项目,mybatis是交由spring的IOC容器管理的,就需要在spring的xml配置中添加如下代码(创建工厂中添加):<!-- 把交给IOC管理 SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 传入PageHelper的插件 --> <property name="plugins"> <array> <!-- 传入插件的对象 --> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <prop key="helperDialect">oracle</prop> <prop key="reasonable">true</prop> </props> </property> </bean> </array> </property> </bean>
下面用一个图来分析一下两个参数作用:
更多情况请参考上面推荐的项目~3.Controller代码编写
上面我们配置完了,至于为什么从controller代码开始是因为controller调用service嘛,这样编写代码更方便快捷!为了看出差别,未分页的controller代码方法如下:
@Controller @RequestMapping("/orders") public class OrdersController { @Autowired private IOrdersService ordersService; //查询所有orders未分页 @RequestMapping("/findAll.do") public ModelAndView findAll() { ModelAndView mv = new ModelAndView(); List<Orders> ordersList = ordersService.findAll(); mv.addObject("ordersList", ordersList); mv.setViewName("orders-list"); return mv; } }
而采用了分页代码则是如下:
//采用分页代码方法 @RequestMapping("/findAll.do") public ModelAndView findAll(@RequestParam(name="page",required = true,defaultValue = "1")int page,@RequestParam(name="size",required = true,defaultValue = "4")int size ) { ModelAndView mv = new ModelAndView(); List<Orders> ordersList = ordersService.findAll(page,size); //PageInfo就是一个分页Bean PageInfo pageInfo =new PageInfo(ordersList); mv.addObject("pageInfo", pageInfo); mv.setViewName("orders-list");