java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mybatis分页插件Pagehelper不生效

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

作者:川子的博客

这篇文章主要介绍了Mybatis分页插件Pagehelper不生效的原因及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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="com.github.pagehelper.PageInterceptor">
                <!-- 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 -->
                <property name="properties">
                    <value>
                        helperDialect=oracle
                        reasonable=true
                        supportMethodsArguments=true
                        params=count=countSql
                        autoRuntimeDialect=true
                    </value>
                </property>
            </bean>
        </array>
    </property>
    <!-- 配置mybatis配置文件的位置 -->
    <!--<property name="configLocation" value="classpath:mybatis-config.xml"/>-->
</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,
    "hasPreviousPage":false,
    "hasNextPage":true,
    "navigatePages":8,
    "navigatepageNums":Array[4],
    "navigateFirstPage":1,
    "navigateLastPage":4,
    "list":Array[2]
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文