程序员

Spring boot Mybatis PageHelper 支

2020-05-15  本文已影响0人  7ColorLotus
PageHelper是什么东西?
如何使用PageHelper?
<dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
      <version>1.2.13</version>
</dependency>
PageHelper.startPage(taskPageVo.getPageNum(), taskPageVo.getPageSize()); //多种分页方法,具体查看PageHelper类
List<SaTask> saTasks = saTaskMapper.findTasks(userIds, taskPageVo.getStatus(), null, null);
使用PageHelper处理多个不同类型数据库数据源
    //mysql
    @Bean(name = "masterSqlSessionFactory")
    @Primary
    public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(masterDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MysqlDataSourceConfig.MAPPER_LOCATION));
        sessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);//配置驼峰映射
        sessionFactory.getObject().getConfiguration().setLogImpl(StdOutImpl.class);

        //分页插件
        Interceptor interceptor = new PageInterceptor();
        Properties properties = new Properties();
        //分页数据库方言为mysql
        properties.setProperty("helperDialect", "mysql");
        //是否为分页数据库多个数据配置
        properties.setProperty("autoRuntimeDialect", "true");
        //是否分页合理化
        properties.setProperty("reasonable", "false");
        interceptor.setProperties(properties);
        sessionFactory.setPlugins(new Interceptor[] {interceptor});

        return sessionFactory.getObject();
    }

    //sqlserver
    @Bean(name = "clusterSqlSessionFactory")
    public SqlSessionFactory clusterSqlSessionFactory(@Qualifier("clusterDataSource") DataSource clusterDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(clusterDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(SqlserverDataSourceConfig.MAPPER_LOCATION));
//        sessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);//配置驼峰映射
        sessionFactory.getObject().getConfiguration().setLogImpl(StdOutImpl.class);

        //分页插件
        Interceptor interceptor = new PageInterceptor();
        Properties properties = new Properties();
        //分页数据库方言为sqlserver
        properties.setProperty("helperDialect", "sqlserver");
        //是否为分页数据库多个数据配置
        properties.setProperty("autoRuntimeDialect", "true");
        //是否分页合理化
        properties.setProperty("reasonable", "false");
        interceptor.setProperties(properties);
        sessionFactory.setPlugins(new Interceptor[] {interceptor});

        return sessionFactory.getObject();
    }
  @Configuration
  public class PageHelperConfig {
    @Bean
    PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum", "false");
        properties.setProperty("rowBoundsWithCount", "false");
        properties.setProperty("pageSizeZero", "true");
        properties.setProperty("reasonable", "false");
        properties.setProperty("supportMethodsArguments", "false");
        properties.setProperty("returnPageInfo", "none");
        properties.setProperty("autoRuntimeDialect", "true"); //处理多数据源数据库
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
      }
  }
  pagehelper:
    autoRuntimeDialect: true
在不同类型数据库的数据源情况下,正确的在spring boot 中使用PageHelper

否则都会出现一个问题,第一次使用某个类型的数据库分页查询正确,后面使用的其他类型数据库分页 查询都会失败。

上一篇 下一篇

猜你喜欢

热点阅读