PageHelper分页插件和easyUI实现分页

场景需求:旧版mybatis分页的,要单独写一个获取总数的方法和查询一模一样(早就看它不顺眼),索性升级一下

。过程中也碰到了不少死胡同(想把自己打死)

。但是使用很简单……真的很简单,请看这哥子的文章

说明:旧版是SpringMVC和mybatis,只是在基础上加了PageHelper

开始,废话不多说

1、引入jar

(申明:版本跟mybatis版本有关,在maven repository看下面依赖说明,找到自己合适的包)

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>

2、在mybatis-config.xml中配置分页插件

<!-- 配置分页插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>

3、好的,开始操练:

3.1、旧代码如下(数据结果和总数,需要查询两次):

@Override
public void findBrandDataGrid(PageInfo pageInfo) {
    pageInfo.setRows(brandMapper.findBrandDataGrid(pageInfo));
    pageInfo.setTotal(brandMapper.findBrandCount(pageInfo));
}

3.2、改进使用pageHelper(切记,去掉mapper xml中sql查询的分页参数,原因:pagehelper会自动拼接limit分页参数)

public void findBrandDataGrid(PageInfo pageInfo) {
        Page<List> page = PageHelper.startPage(pageInfo.getNowpage(), pageInfo.getSize());
        List result = brandMapper.findBrandDataGrid(pageInfo);
        pageInfo.setTotal((int) page.getTotal());
        pageInfo.setRows(result);
    }

调试看看sql,如图

4、致命问题,说明:

1、由于easyui需要,原本系统封装了一个PageInfo(玛德,这个和PageHelper这个PageInfo命名一模一样,所以被挂死在这里大半天<希望大伙不要像我一样傻逼,被这两个PageInfo搞团团转,他们是两个毫不相干的东西,虽然里面内容有点相似>)

easyui特定数据格式:{total:"100",rows:[{"id":"1" , "name":"aaa"},{"id":"2" , "name":"bbb"}]}

所以还是将通过PageHelper查询的结果和总数,放入旧的结果集中:

        pageInfoSelf.setTotal((int) page.getTotal());
        pageInfoSelf.setRows(result);

2、第二个蛋疼问题是,pagehelper只查询总数,不查询结果集(感谢文章

原因是PageHelper.startPage(start, limit);——————start从1开始

3、我估计会遇到,有条件的查询获取总数会有问题……后面再试试

猜你喜欢

转载自blog.csdn.net/hgg923/article/details/83150565