druid导致pagehelper分页失效问题

项目架构:
项目架构:springboot聚合项目架构
持久层:mybatis
数据库连接池为:druid

问题:

按照官方文档配置和开发,pagehelper分页始终无效,会把所有的数据全部查出来,没有起到分页的效果。

查阅大量资料,总结了两个导致pagehelper失效的原因:
1、分页插件依赖错误,springboot 需要依赖pagehelper-spring-boot-starter这个特定版本
官方链接:https://github.com/pagehelper/pagehelper-spring-boot
2、PageHelper.startPage()需要紧跟查询语句前面,不然导致分页失效。

按照以上两个原因修改之后还是无效,而且切换了各种版本,从低试到高版本,最后都无疑例外的无效,搞了好久,已经打算自己做分页了,最后发现:

由于使用druid,因此需要自己在代码中实现bean的配置以及添加分页插件,否则分页无效,而且不同版本实现的bean也不同。

最后我在项目中添加了一个配置类,解决了此问题。

5.0.0以上的版本则使用的是PageInterceptor,那么我们的bean就需要改成下面这样:

@Configuration
public class PageHelperConfig {

    @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","mysql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }

}

pagehelper 5.0.0以下版本。使用的是这个类Pagehelper,我们在项目中可以这样写:

@Configuration
public class PageHelperConfig {

 @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","mysql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

注意:
1、版本不同,所实现的bean不相同
2、版本不同,数据库方言不同
参考链接:
https://blog.csdn.net/zht741322694/article/details/80029654

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值