目前项目中使用springboot+mybatis+druid进行操作数据库的数据源、事务整合配置,整合时没有什么问题,后面需要加入一个分页插件时,搞了我好久,将pagehelper的版本从4.0.x到5.1.0试了个遍,特此记录一下。
由于使用druid,需要自己在代码中实现bean的配置以及添加分页插件。pagehelper 5.0.0以下版本。使用的是这个类Pagehelper,我们在项目中可以这样写:
@Bean(name = "pageHelper")
public pageHelper pageHelper(){
pageHelper pageHelper = new pageHelper();
Properties properties = new Properties();
/**默认false,设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用*/
properties.setProperty("offsetAsPageNum","true");
/**默认false,设置为true时,使用RowBounds分页会进行count查询 */
properties.setProperty("rowBoundsWithCount","true");
/** 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 */
properties.setProperty("reasonable","true");
/** always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page */
properties.setProperty("returnPageInfo","check");
/** 支持通过Mapper接口参数来传递分页参数 */
properties.setProperty("supportMethodsArguments","false");
/** 配置数据库的方言 */
properties.setProperty("dialect","oracle");
pageHelper.setProperties(properties);
return pageHelper;
}
而5.0.0以上的版本则使用的是PageInterceptor,那么我们的bean就需要改成下面这样:
@Bean(name = "pageHelper")
public PageInterceptor pageHelper(){
PageInterceptor pageHelper = new PageInterceptor();
Properties properties = new Properties();
/**默认false,设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用*/
properties.setProperty("offsetAsPageNum","true");
/**默认false,设置为true时,使用RowBounds分页会进行count查询 */
properties.setProperty("rowBoundsWithCount","true");
/** 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 */
properties.setProperty("reasonable","true");
/** always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page */
properties.setProperty("returnPageInfo","check");
/** 支持通过Mapper接口参数来传递分页参数 */
properties.setProperty("supportMethodsArguments","false");
/** 配置数据库的方言 */
properties.setProperty("helperDialect","oracle");
pageHelper.setProperties(properties);
return pageHelper;
}
注意: 1、版本不同,所实现的bean不相同
2、版本不同,数据库方言不同