zoukankan      html  css  js  c++  java
  • spring-boot PageHelper

    分页插件PageHelper

    参看了pagehelper-spring-boot,使用起来非常放方便,关于更多PageHelper可以点击https://github.com/pagehelper/Mybatis-PageHelper

    添加maven依赖

    根据上面地址中的说明,只需要添加如下依赖,并且可以不再mybatis的依赖

     
    1. <!--分页插件-->  
    2. <dependency>  
    3.       <groupId>com.github.pagehelper</groupId>  
    4.       <artifactId>pagehelper-spring-boot-starter</artifactId>  
    5.       <version>1.0.0</version>  
    6. </dependency>  

    pagehelper的使用

    我增加了如下测试代码。

    [plain] view plain copy
     
    1. @RequestMapping("/find/mybatis/page")  
    2. public String findUserPageFromMybatis(HttpServletRequest request, Integer pageNum, Integer pageSize) {  
    3.     pageNum = pageNum == null ? 1 : pageNum;  
    4.     pageSize = pageSize == null ? 10 : pageSize;  
    5.     PageHelper.startPage(pageNum, pageSize);  
    6.     List<UserMo> list = userMapper.selectUserList();  
    7.     PageInfo pageInfo = new PageInfo(list);  
    8.     Page page = (Page) list;  
    9.     return "PageInfo: " + JSON.toJSONString(pageInfo) + ", Page: " + JSON.toJSONString(page);  
    10. }  

    运行程序后在浏览器输入 http://127.0.0.1:8080/find/mybatis/page,会看到如下输出。

    1. PageInfo: {  
    2.     "endRow": 1,  
    3.     "firstPage": 1,  
    4.     "hasNextPage": true,  
    5.     "hasPreviousPage": false,  
    6.     "isFirstPage": true,  
    7.     "isLastPage": false,  
    8.     "lastPage": 8,  
    9.     "list": [  
    10.         {  
    11.             "createDate": 1483586613000,  
    12.             "id": 1,  
    13.             "isDeleted": 0,  
    14.             "modifyDate": 1483586613000,  
    15.             "money": 1.20,  
    16.             "name": "sss"  
    17.         }  
    18.     ],  
    19.     "navigateFirstPage": 1,  
    20.     "navigateLastPage": 8,  
    21.     "navigatePages": 8,  
    22.     "navigatepageNums": [1,2,3,4,5,6,7,8],  
    23.     "nextPage": 2,  
    24.     "pageNum": 1,  
    25.     "pageSize": 1,  
    26.     "pages": 11,  
    27.     "prePage": 0,  
    28.     "size": 1,  
    29.     "startRow": 1,  
    30.     "total": 11  
    31. },  
    32. Page: [  
    33.     {  
    34.         "createDate": 1483586613000,  
    35.         "id": 1,  
    36.         "isDeleted": 0,  
    37.         "modifyDate": 1483586613000,  
    38.         "money": 1.20,  
    39.         "name": "sss"  
    40.     }  
    41. ]  

    重要提示

    • 只有紧跟在 PageHelper.startPage 方法后的第一个 MyBatis 的查询(select)方法会被分页。
    • 请不要在系统中配置多个分页插件(使用 spring 时,mybatis-config.xml 和 Spring<bean> 配置方式,请选择其中一种,不要同时配置多个分页插件)。
    • 对于带有 for update 的 sql,会抛出运行时异常,对于这样的 sql 建议手动分页,毕竟这样的 sql 需要重视。
    • 由于嵌套结果方式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以无法保证分页结果数量正确。

    当spring boot集成好mybatis时候需要进行分页,我们首先添加maven支持

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper</artifactId>
     <version>5.1.2</version>
    </dependency>
    <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
     <version>1.2.3</version>
    </dependency>
    <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.3</version>
    </dependency>

    方式一:我们在application.yml(spring 需要读取的yml)中加入

    1
    2
    3
    4
    5
    pagehelper:
     helperDialect: mysql
     reasonable: true
     supportMethodsArguments: true
     params: count=countSql

    然后重启即可。

    配置文件最终会被java所读取,最终注入到spring bean中,所以我们方法二是配置其bean类,热加载方便修改当然方式一更简单,

    方式二:在注解涵盖package下面新建PageHeleperConfig

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import com.github.pagehelper.PageHelper;
    import java.util.Properties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
      
    /**
     * @author zhuxiaomeng
     * @date 2018/1/2.
     * @email 154040976@qq.com
     */
    @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;
     }
      
    }

    pageHelper 基础知识为:

    1
    2
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageHelper;
    1
    Page<T> tPage= PageHelper.startPage(page,limit);

    下一句的查询语句来进行分页。你只需要用List<T>接收

    下面是通用Mapper和PageHelper在Spring Boot下的编程式配置示例,其中包名及其他配置参数请自行替换成符合你项目的配置。

    @Configuration
    public class MybatisConfigurer {
        @Resource
        private DataSource dataSource;
    
        @Bean
        public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setTypeAliasesPackage("cn.potato.orm.model");
    
            //分页插件
            PageHelper pageHelper = new PageHelper();
            Properties properties = new Properties();
            properties.setProperty("reasonable", "true");
            properties.setProperty("supportMethodsArguments", "true");
            properties.setProperty("returnPageInfo", "check");
            properties.setProperty("params", "count=countSql");
            pageHelper.setProperties(properties);
    
            //添加插件
            bean.setPlugins(new Interceptor[]{pageHelper});
    
            //添加XML目录
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
            return bean.getObject();
        }
    
        @Configuration
        @AutoConfigureAfter(MybatisConfigurer.class)
        public static class MyBatisMapperScannerConfigurer {
    
            @Bean
            public MapperScannerConfigurer mapperScannerConfigurer() {
                MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
                mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
                mapperScannerConfigurer.setBasePackage("cn.potato.orm.mapper");
                //配置通用mappers
                Properties properties = new Properties();
                properties.setProperty("mappers", "cn.potato.orm.core.Mapper");
                properties.setProperty("notEmpty", "false");
                properties.setProperty("IDENTITY", "MYSQL");
                mapperScannerConfigurer.setProperties(properties);
    
                return mapperScannerConfigurer;
            }
    
        }
    }


  • 相关阅读:
    2、requests练习
    1、接口基础
    9、异常和文件
    宝马5系图片分类下载自动创建文件夹并保存
    opencv操作视频python
    利用协程框架,无界面浏览器爬取上海高院开庭数据
    协程框架
    多线程抓取邮箱
    selenium操作下拉选和网页提示框
    selenium相关导入By、Keys、WebDriverWait、ActionChains,显示等待与隐式等待
  • 原文地址:https://www.cnblogs.com/jtlgb/p/8489411.html
Copyright © 2011-2022 走看看