mybatis分页插件PageHelper的使用

4 篇文章 0 订阅
1 篇文章 0 订阅

本篇文章主要写mybaits插件的使用过程,其中包括:
- 原理简单解析
- mybatis配置(单独mybatis的配置和结合spring的配置)
- mybatisPageHelper使用(两个方法)
- 总结

代码完整

原理分析

PageHelper就是只需要调用方法就可以进行对数据表提取数据的时候进行分页。
主要特点:
- 不需要关心数据库是什么类型,支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库
- 非常简单实用。

Alt text

mybatis配置

  1. 需要的jar包
    • com.github.pagehelper
    • org.mybatis
  2. mybatis配置
    • 需要注意的是:1.插件的版本问题,5.0以上版本用到的类是不一样的。2.插件的位置顺序问题。详情看下面的配置讲解
  3. 单独mybatis的配置
<configuration>

    <properties resource="db.properties"/>


    <!-- 配置分页插件 -->
    <!--位置一定要正确!!!放的位置一定要正确-->
    <!-- 顺序如下
     properties?, settings?, 
    typeAliases?, typeHandlers?, 
    objectFactory?,objectWrapperFactory?, 
    plugins?, 
    environments?, databaseIdProvider?, mappers?

    -->

    <plugins>
        <!--分页插件 5.0 版本和 4.2.x 实现完全不同,否则会报错-->
        <!--5.0用的类是com.github.pagehelper.PageInterceptor-->
        <!--5.0以下用的是com.github.pagehelper.PageHelpe-->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
          <!--
            这里是可以使用参数的 填写参数形式是<property name="param1" value="value1"/>
          这里我不用参数,默认就可以了,有需求可以填上参数。可以参考网上的文档

            -->
        </plugin>
    </plugins>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/personDao.xml"/>
    </mappers>
</configuration>

4.结合spring的配置文件,只需要在mybatis配置文件加入以下代码就可以

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <!-- 注意其他配置 -->
  <property name="plugins">
    <array>
      <bean class="com.github.pagehelper.PageInterceptor">
        <property name="properties">
          <!--使用下面的方式配置参数,一行配置一个 -->
          <value>
            params=value1
          </value>
        </property>
      </bean>
    </array>
  </property>
</bean>

mybatisPageHelper使用(两个方法)

  • 代码很简单,主要就3个类。完整代码已经放到github
    • personDao Dao类
    • Person 实体类
    • test 代码测试类
  • test层代码

 //加载mybaits文件
    private SqlSession getPersonDao(String resource){
        InputStream inputStream= null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }


     @Test
    public void getPerson(){
        //首先获取全部数据
        SqlSession sqlSession=getPersonDao("mybaits-config.xml");
        personDao mapper = sqlSession.getMapper(personDao.class);

        //方法一:
        //取第1页的数据,第一页显示10行
        PageHelper.startPage(1, 10);
        //得到的peopleList 类型是Page<E>,Page<E>类型里面包含了count, pageNum, pageSize,
        // startRow, endRow, total, pages, reasonable, pageSizeZero 变量
        List<Person> peopleList=mapper.getData();
        //可以直接输出看看有什么变量
        System.out.println(peopleList.toString());
        //如果需要使用Page<E> 的方法获取属性 需要方法一是:强制转换,方法二是 pageInfo。
        //方法一:
        System.out.println("获取一下总数 "+((Page)peopleList).getTotal());
        System.out.println("总页数有 "+((Page)peopleList).getPages());
        System.out.println(peopleList.get(1));
        //方法二:
        //pageInfo对结果进行封装
        PageInfo pageInfo=new PageInfo(peopleList);
        System.out.println("获取一下总数 "+pageInfo.getTotal());

        //遍历数据
        for (Person aPeopleList : peopleList) {
            System.out.println(aPeopleList);
        }
    }

输出内容:

Page{count=true, pageNum=1, pageSize=10, startRow=0, endRow=10, total=300, pages=30, reasonable=false, pageSizeZero=false}
获取一下总数 300
总页数有 30
Person{id=2, person_name='小明2', hobby='篮球', age=1}
获取一下总数 300
Person{id=1, person_name='小明1', hobby='篮球', age=1}
Person{id=2, person_name='小明2', hobby='篮球', age=1}
Person{id=4, person_name='小明3', hobby='篮球', age=1}
Person{id=5, person_name='小明4', hobby='篮球', age=1}
Person{id=6, person_name='小明5', hobby='篮球', age=1}
Person{id=7, person_name='小明6', hobby='篮球', age=1}
Person{id=8, person_name='小明7', hobby='篮球', age=1}
Person{id=9, person_name='小明8', hobby='篮球', age=1}
Person{id=10, person_name='小明9', hobby='篮球', age=1}
Person{id=11, person_name='小明10', hobby='篮球', age=1}

总结

1.可以看出来代码量很少,是非常轻量级的,非常好用。只是配置的过程中可能会浪费一点时间,不过配置完后用起来就很舒服了。
2. 主要配置文件的信息,这些是我掉过得坑。插件的位置以及版本需要注意好!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值