mybits 分页插件的使用。-------PageHelper

我们经常用到分页查询数据。

今天我们就实现mybits的物理分页效果。一个插件化的分页---PageHelper

1:添加maven依赖:

  1. <!-- pagehelper分页插件 -->  
  2.     <dependency>  
  3.         <groupId>com.github.pagehelper</groupId>  
  4.         <artifactId>pagehelper</artifactId>  
  5.     <version>5.0.0</version>  
  6. </dependency>  
2: spring -mybatis.xml的配置

  1. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  2.         <!-- 数据库连接池 -->  
  3.         <property name="dataSource" ref="dataSource" />  
  4.         <!-- 加载mybatis的全局配置文件 -->  
  5.         <!-- <property name="configLocation" value="classpath:sqlMapConfig.xml"   
  6.             /> -->  
  7.             <!--  为com.red.packet.po包下的所有实体类配置别名(mybatis 3.2.8以上版本) -->  
  8.         <property name="typeAliasesPackage" value="com.red.packet.po" />  
  9.         <property name="plugins">  
  10.             <array>  
  11.                 <bean class="com.github.pagehelper.PageInterceptor">  
  12.                     <property name="properties">  
  13.                         <value>  
  14.                             helperDialect=mysql  
  15.                         </value>  
  16.                     </property>  
  17.                 </bean>  
  18.             </array>  
  19.         </property>  
  20.     </bean>  
3:在Collotraller中实现分页的引用。

  1. @RequestMapping("showcity")  
  2.     public ModelAndView showCityList(ModelAndView mv,  
  3.             @RequestParam(required=true,defaultValue="1") Integer page,  
  4.             @RequestParam(required=false,defaultValue="10") Integer pageSize){  
  5.   
  6.         PageHelper.startPage(page, pageSize);  
  7.         List<CityList> list = cityListService.selectAll();  
  8.   
  9.         PageInfo<CityList> p=new PageInfo<CityList>(list);  
  10.         //System.out.println(p.getList());  
  11.   
  12.         mv.addObject("citylist", list);  
  13.         mv.addObject("page", p);  
  14.         mv.setViewName("weather/showCityList");  
  15.   
  16.         return mv;  
  17.     }  
特别说明:这里标红的地方是引用插件的东西。。。。。。。。。。

可以看到,方法里有两个参数,前面也说了,这是一个demo,仅仅只是一个非常简单的分页效果。

PageHelper.startPage(page, pageSize);

这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。

PageInfo这个类是插件里的类,这个类里面的属性还是值得看一看:

[html]  view plain  copy
  1. //当前页  
  2.     private int pageNum;  
  3.     //每页的数量  
  4.     private int pageSize;  
  5.     //当前页的数量  
  6.     private int size;  
  7.     //排序  
  8.     private String orderBy;  
  9.   
  10.     //由于startRow和endRow不常用,这里说个具体的用法  
  11.     //可以在页面中"显示startRow到endRow 共size条数据"  
  12.   
  13.     //当前页面第一个元素在数据库中的行号  
  14.     private int startRow;  
  15.     //当前页面最后一个元素在数据库中的行号  
  16.     private int endRow;  
  17.     //总记录数  
  18.     private long total;  
  19.     //总页数  
  20.     private int pages;  
  21.     //结果集  
  22.     private List<T> list;  
  23.   
  24.     //第一页  
  25.     private int firstPage;  
  26.     //前一页  
  27.     private int prePage;  
  28.     //下一页  
  29.     private int nextPage;  
  30.     //最后一页  
  31.     private int lastPage;  
  32.   
  33.     //是否为第一页  
  34.     private boolean isFirstPage = false;  
  35.     //是否为最后一页  
  36.     private boolean isLastPage = false;  
  37.     //是否有前一页  
  38.     private boolean hasPreviousPage = false;  
  39.     //是否有下一页  
  40.     private boolean hasNextPage = false;  
  41.     //导航页码数  
  42.     private int navigatePages;  
  43.     //所有导航页号  
  44.     private int[] navigatepageNums;  

使用PageInfo这个类,你需要将查询出来的list放进去:

PageInfo<CityList> p=new PageInfo<CityList>(list);
然后 mv.addObject("page", p);  
这样在页面中就可以通过 ${page.nextPage} 翻到下一页, 
${page.prePage} 翻到上一页,

至此:全文愉快的结束。。。。

猜你喜欢

转载自blog.csdn.net/u012115730/article/details/79012584
今日推荐