zoukankan      html  css  js  c++  java
  • springboot+mybatis使用PageHelper分页

    项目结构和spring搭建mybatis请参考springboot整合mybatis。在这个基础上配置分页。

    一:导入PageHelper依赖

    <dependency>
          <groupId>com.github.pagehelper</groupId>
          <artifactId>pagehelper</artifactId>
    	<version>5.1.2</version>
    </dependency>
    

    二:在启动类SpringmybatisdemoApplication中配置PageHelper bean

    @Bean
    	public PageHelper pageHelper() {
    		System.out.println("MyBatisConfiguration.pageHelper()");
    		PageHelper pageHelper = new PageHelper();
    		Properties p = new Properties();
    		p.setProperty("offsetAsPageNum", "true");
    		p.setProperty("rowBoundsWithCount", "true");
    		p.setProperty("reasonable", "true");
    		pageHelper.setProperties(p);
    		return pageHelper;
    	}
    

    三:在controller中使用PageHelper ,注入对应的服务UserService (该服务的具体可看本文章开头的springboot整合mybatis).注意:只有紧接着PageHelper.startPage(2,3); 后的那句sql才会进行分页,再下一句sql则不分页。特别注意的是,下面获取到的结果是存放在返回的list中的,但是如果直接输出personList.toString(),输出的是Page对应(写的是一个结果的总体信息格式如下Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=6, pages=2, countSignal=false, orderBy='name DESC ', orderByOnly=false, reasonable=true, pageSizeZero=false})(因为toString方法被重写了),需要用循环获取的方式获取其中的内容,才可以看到分页的结果

    package com.example.springmybatisdemo.controller;
    
    import com.example.springmybatisdemo.entity.Person;
    import com.example.springmybatisdemo.service.UserService;
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageHelper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class UserController {
        @Autowired
        private UserService userService;
    
        @RequestMapping("/helloUser/{id}")
        @ResponseBody
        public String selectUser (@PathVariable int id){
            PageHelper.startPage(2,3); //pageNum=2, pageSize=3 ,表示每页的大小为3,查询第二页的结果
            PageHelper.orderBy("name DESC "); //进行分页结果的排序,name为字段名,排序规则DESC/ASC
            List<Person>personList= userService.selectUser();
            System.out.println(personList.toString()); //输出的是Page对象
            for(int i=0;i<personList.size();i++){
                System.out.println(personList.get(i)); //获取到的分页结果
            }
            return userService.selectUser().toString(); //这句不分页,又再次执行原始sql语句,正确的是返回list中的结果
    
        }
    }
    
    
  • 相关阅读:
    详细解释ISupportInitialize接口
    微软发布了VS2005 IDE增强工具
    Oracle中无法解析TNS的陷阱
    Oracle临时表空间为何暴涨?
    欧洲游回来
    树比较的一个另类方法
    控件的Archor属性没有作用,是.Net的BUG?
    Oracle中取字段唯一值的一个sql语句的写法
    Qt程序的翻译
    Qt程序运行到Symbian手机上
  • 原文地址:https://www.cnblogs.com/hts-technology/p/8717360.html
Copyright © 2011-2022 走看看