Mybatis分页插件-PageHelper(5.0)的使用

来源:互联网 发布:卫宁软件股票代码 编辑:程序博客网 时间:2024/06/05 06:26

转:http://blog.csdn.net/u012728960/article/details/50791343

maven依赖

<!-- pagehelper分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.0.0</version></dependency>

一、首先,在spring-mybatis.xml中是这样配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><!-- <property name="configLocation" value="classpath:sqlMapConfig.xml" /> --><!--  为com.red.packet.po包下的所有实体类配置别名(mybatis 3.2.8以上版本) --><property name="typeAliasesPackage" value="com.red.packet.po" /><property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><value>helperDialect=mysql</value></property></bean></array></property></bean>

二、需要分页,自然就还要一个查询了。用了PageHelper之后,查询语句就可以很简单了。

<select id="selectAll" resultMap="BaseResultMap">    select    <include refid="Base_Column_List" />    from citylist  </select>

这是我的查询语句,查询城市列表。没有其他条件,就是查所有。当然,我这只是一个小的demo,没做那么麻烦,真正的使用,是需要条件查询的。
现在来讲讲用了PageHelper之后的好处:
那就是查询语句可以不用limit,但是就一点好处吗?自然不是。请接着往下看。

三、接口、实现类我就不再贴代码了,该怎么写还是怎么写,不需要传分页参数。然后是Controller:

@RequestMapping("showcity")    public ModelAndView showCityList(ModelAndView mv,            @RequestParam(required=true,defaultValue="1") Integer page,            @RequestParam(required=false,defaultValue="10") Integer pageSize){        PageHelper.startPage(page, pageSize);        List<CityList> list = cityListService.selectAll();        PageInfo<CityList> p=new PageInfo<CityList>(list);        //System.out.println(p.getList());        mv.addObject("citylist", list);        mv.addObject("page", p);        mv.setViewName("weather/showCityList");        return mv;    }

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

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

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

//当前页    private int pageNum;    //每页的数量    private int pageSize;    //当前页的数量    private int size;    //排序    private String orderBy;    //由于startRow和endRow不常用,这里说个具体的用法    //可以在页面中"显示startRow到endRow 共size条数据"    //当前页面第一个元素在数据库中的行号    private int startRow;    //当前页面最后一个元素在数据库中的行号    private int endRow;    //总记录数    private long total;    //总页数    private int pages;    //结果集    private List<T> list;    //第一页    private int firstPage;    //前一页    private int prePage;    //下一页    private int nextPage;    //最后一页    private int lastPage;    //是否为第一页    private boolean isFirstPage = false;    //是否为最后一页    private boolean isLastPage = false;    //是否有前一页    private boolean hasPreviousPage = false;    //是否有下一页    private boolean hasNextPage = false;    //导航页码数    private int navigatePages;    //所有导航页号    private int[] navigatepageNums;

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

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


3 2