开发者

Mybatis分页插件Pagehelper不生效的原因及解决

目录
  • Pagehelper在SpringBoot2中的使用
  • 配置分页插件信息
  • 也可以使用代码的方式配置
  • 分页代码实现
  • 返回值格式
  • 总结

Pagehelper在SpringBoot2中的使用

1、在pom文件正确引入pagehelper-spring-boot-starter

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>编程;

2、不能引入pagehelper,因为这样会导致分页插件不起作用,除非在myBATisConfig.XML文件中再加入配置

<!-- mybatis分页-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.4</version>
</dependency>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<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="typeAliasesPackage" value="com.xxx.xxx.common.model"></property>
    <property name="plugins">
        <array>
            <bean class=www.devze.com"com.github.pagehelper.PageInterceptor">
                <!-- 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 -->
                <property name="properties">
                    <value>
                        helperDialect=oracle
                        reasonable=true
                        supportMethodsArguments=true
                        params=count=countSql
                        autoRuntimeDialect=true
                    </value>
                </property>
            </beanwww.devze.com>
        </array>
    </property>
    <!-- 配置mybatis配置文件的位置 -->
    <!--<property name="configLocation" value="classpath:mybatis-config.xml"/&gpythont;-->
</bean>

配置分页插件信息

1、在application.yml 中配置

#mybatis 分页插件
pagehelper:
  helperDialect: oracle
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

2、或者在application.properties文件中配置

#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

也可以使用代码的方式配置

@Configuration
public class PageHelperConfig {

    @Bean
    public PageHelper getPageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        properties.setProperty("params", "count=countSql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }

}

分页代码实现

注意点:

1、PageHelper.startPage(page,size)方法一般要放在方法中的首行

2、PageHelper 只对其后的第一个查询有效

    @Override
    public PageInfo<User> findUserList(Integer page, Integer size) {
        // PageHelper 只对其后面的第一个查询有效
        PageHelper.startPage(page,size);
        // 执行分页查询
        List<User> list1=userMapper.selectUserList();
        // 不会执行分页查询
        List<User> list2=userMapper.selectUserList();
        // 返回结果
        PageInfo<User> pageInfo=new PageInfo<User>(list1);
        return pageInfo;
    }

返回值格式

{
    "total":34,
    "pageNum":1,
    "pageSize":10,
    "size":10,
    "startRow":1,
    "endRow":10,
    "pages":4,
    "prePage":0,
    "nextPage":2,
    "isFirstPage":true,
    "isLastPage":false,
    "hasMxNbrPdcPreviousPage":false,
    "hasNextPage":true,
    "navigatePages":8,
    "navigatepageNums":Array[4],
    "navigateFirstPage":1,
    "navigateLastPage":4,
    "list":Array[2]
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜