mtjmtj7的小站
mtjmtj7的小站
© mtjmtj7
All Rights Reserved.

mybatis分页插件-PageHelper的使用

首先ssm整合就不用说了。

下载两个jar包:

分页插件pagehelper.jar:

https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
由于使用了sql解析工具,你还需要下载jsqlparser.jar

4.1.0及以后版本需要0.9.4版本

http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.4/
4.1.0以前版本需要0.9.1版本

http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.1/

 

有以下两种配置方式:

  1. 配置springmvc-config.xml或者applicationContext.xml,主要取决于你的sqlsessionfactory在哪配置。

 

<!-- 配置MyBatis工厂SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!--注入数据源 -->
		<property name="dataSource" ref="dataSource" />
		<!--指定核MyBatis心配置文件位置 -->
		<property name="configLocation" value="classpath:mybatis-config.xml" />
		<!-- 分页插件 -->
		<property name="plugins">
			<array>
			  <bean class="com.github.pagehelper.PageInterceptor">
			    <property name="properties">
			      <!--使用下面的方式配置参数,一行配置一个 -->
			      <value>
			        helperDialect=mysql
			      </value>
			    </property>
			  </bean>
			</array>
		</property>
	</bean>

2.在mybatis-config里配置,在配置数据源的时候配置pagehelper

   <plugins>
         <!-- PageHelper4.1.1 --> 
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="oracle"/>
            <property name="offsetAsPageNum" value="false"/>
            <property name="rowBoundsWithCount" value="false"/>
            <property name="pageSizeZero" value="true"/>
            <property name="reasonable" value="false"/>
            <property name="supportMethodsArguments" value="false"/>
            <property name="returnPageInfo" value="none"/>
        </plugin>
    </plugins>

 

在mapper文件中正常查询。

     <!-- 分页查询 -->
	<select id="selectAll" resultType="document">
    	select * from document
    </select>

在controller里:

	@RequestMapping("show")
    public String showCityList(Model model,
            @RequestParam(required=true,defaultValue="1") Integer page,
            @RequestParam(required=false,defaultValue="10") Integer pageSize){
		////page:要显示第几页,pageSize:每页显示的记录数
        PageHelper.startPage(page, pageSize);
        List<Document> list = ds.selectAll();

        PageInfo<Document> p=new PageInfo<Document>(list);
        //System.out.println(p.getList());
        model.addAttribute("list", list);
        model.addAttribute("page", p);
        return "list";
    }

对于结果,储存在list中,分页信息储存在p中。

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;

在JSP中使用:

<a href=”?page=${page.prePage}”>上一页</a>

<a href=”?page=${page.nextPage}”>下一页</a>

更多使用慢慢摸索吧~~

打赏
2018-01-21
182 阅读
关键字:
暂无评论

发表评论