PageHelper 分頁實現

PageHelper是Mybatis的一個分頁插件,非常的好用! 

PageHelper的使用很簡單,只需要在Maven中添加pagehelper這個依賴就可以了。

Maven的依賴如下:

//注:這裏我是用springBoot版的!也可以使用其它版本的。
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.2.3</version>
</dependency

第一種,在application.properties或application.yml添加

 pagehelper:
  helperDialect: mysql
  offsetAsPageNum: true
  rowBoundsWithCount: true
  reasonable: false

第二種,在mybatis.xml配置中添加

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 掃描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    <!-- 配置分頁插件 -->
     <property name="plugins">
        <array>
          <bean class="com.github.pagehelper.PageHelper">
            <property name="properties">
              <value>
                helperDialect=mysql
                offsetAsPageNum=true
                rowBoundsWithCount=true
                reasonable=false
              </value>
            </property>
          </bean>
        </array>
      </property>
  </bean>

第三種,在代碼中添加,使用@Bean註解在啓動程序的時候初始化。

 @Bean
  public PageHelper pageHelper(){
    PageHelper pageHelper = new PageHelper();
   Properties properties = new Properties();
   //數據庫
   properties.setProperty("helperDialect", "mysql");
   //是否將參數offset作爲PageNum使用
   properties.setProperty("offsetAsPageNum", "true");
   //是否進行count查詢
   properties.setProperty("rowBoundsWithCount", "true");
   //是否分頁合理化
   properties.setProperty("reasonable", "false");
   pageHelper.setProperties(properties);
  }

 

設置完PageHelper 之後,使用的話,只需要在查詢的sql前面添加PageHelper.startPage(pageNum,pageSize);,如果是想知道總數的話,在查詢的sql語句後買呢添加 page.getTotal()就可以了。

//代碼示例:
public List<T> findByListEntity(T entity) {
        List<T> list = null;
        try {
            Page<?> page =PageHelper.startPage(1,2); 
            System.out.println(getClassName(entity)+"設置第一頁兩條數據!");
            list = getMapper().findByListEntity(entity);
            System.out.println("總共有:"+page.getTotal()+"條數據,實際返回:"+list.size()+"兩條數據!");
        } catch (Exception e) {
            logger.error("查詢"+getClassName(entity)+"失敗!原因是:",e);
        }
        return list;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章