Mybatis物理分页插件PageHelper 5.0


问题描述

昨天在Maven管理的项目中集成PageHelper的时候总是没有成功。我采用的是Spring的集成方式。

因为我使用的是PageHelper5.0,如果按照这样的配置的话,Log就会报出如下异常:

Error creating bean with name ‘sqlSessionFactory’ defined in class path resource
[META-INF/spring/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException:
Failed to convert property value of type ‘java.lang.Object[]’ to required type ‘org.apache.ibatis.plugin.Interceptor[]’ for property ‘plugins’;
nested exception is java.lang.IllegalStateException:
Cannot convert value of type ‘com.github.pagehelper.PageHelper’ to required type ‘org.apache.ibatis.plugin.Interceptor’ for property ‘plugins[0]’: no matching editors or conversion strategy found

大致意思就是没办法转型成org.apache.ibatis.plugin.Interceptor

解决方案

最新的PageHelper的文档显示PageHelper 5.0与以前版本不一样

  • 使用 QueryInterceptor 规范 处理分页逻辑 新的分页插件拦截器为
    com.github.pagehelper.PageInterceptor 新的 PageHelper 是一个特殊的 Dialect
  • 实现类,以更友好的方式实现了以前的功能 新的分页插件仅有 dialect 一个参数,默认的 dialect 实现类为 PageHelper
  • PageHelper 仍然支持以前提供的参数,在最新的使用文档中已经全部更新 PageHelper 的 helperDialect 参数和以前的 dialect 功能一样,具体可以看文档的参数说明
  • 增加了基于纯 RowBounds 和 PageRowBounds 的分页实现,在com.github.pagehelper.dialect.rowbounds 包中,这是用于作为 dialect 参数示例的实现,后面会补充更详细的文档 去掉了不适合出现在分页插件中的 orderby功能,以后会提供单独的排序插件
  • 去掉了PageHelper 中不常用的方法新的文档,更新历来更新日志中提到的重要内容,提供英文版本文档 解决 bug 将 Db2RowDialect 改为Db2RowBoundsDialect 所有分页插件抛出的异常改为 PageException

Demo中配置是这样的。

<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>

注意:在5.0中使用了helperDialect代替了原来的dialect属性。

声明:纯情阿丁|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Mybatis物理分页插件PageHelper 5.0


阿丁在Coding,等你成为我的朋友!