springboot內置分頁技術


1,在pom.xml中注入分頁的配置

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

2,定義公共實體類,包含頁碼,頁尺寸

import java.io.Serializable;

import com.github.pagehelper.PageHelper;

public abstract class AbstractPageForm<T extends AbstractPageForm<T>> implements Serializable {
    
    private static final long serialVersionUID = 1L;
  
    /**
     * @Description 頁碼為首頁
     */
    protected int pageNum = 1;
    
    /**
     * @Description 每頁顯示數量,默認為5
     */
    protected int pageSize = 10;
  
    public int getPageNum() {
        return pageNum;
    }
  
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }
  
    public int getPageSize() {
        return pageSize;
    }
  
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
  
    /**
     * @Title enablePaging
     * @Description 啟用分頁
     * @return
     */
    @SuppressWarnings("unchecked")
    public final T enablePaging() {
        PageHelper.startPage(pageNum, pageSize);
        return (T) this;
    }

}
import java.util.Properties;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

@Configuration
public class PageBean{
    @Bean
    public PageHelper 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;
    }
}

3,定義分頁查詢條件的VO,要繼承AbstractPageForm注意<>中要與繼承類保持一致

import com.ulic.gis.util.paging.AbstractPageForm;

public class RolePageVO extends AbstractPageForm<RolePageVO>{

    private static final long serialVersionUID = 1L;
    private String roleName;
    
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
    
}

4,controller層的關鍵分頁代碼

    @RequestMapping(value="/findAllRole")
    public ModelAndView findAllRole(HttpServletRequest request,HttpServletResponse response,@ModelAttribute RolePageVO rolePageVO){
        ModelAndView mav = new ModelAndView();
        
        log.info("rolePageVO:{}",JSONUtils.object2json(rolePageVO));
        
        PageHelper.startPage(rolePageVO.getPageNum(), rolePageVO.getPageSize());
        List<RoleVO> roleList = roleManageService.getRoleByparam(rolePageVO);
        PageInfo<RoleVO> rolePageList = new PageInfo<>(roleList);
        
        mav.addObject("roleList", rolePageList);
        mav.addObject("rolePageVO",rolePageVO);
        mav.setViewName("/authorityManage/roleInfoList");
        return mav;
    }

此處需要注意,上面粉紅色查詢代碼必須放在兩行紅色代碼之間,且只能有一條查詢語句。如果出現多條查詢語句,則只給第一條查詢語句分頁。

 5,jsp頁面中通過下面的方式去除分頁數據

PageInfo<RoleVO> info = (PageInfo<RoleVO>)request.getAttribute("roleList");
List<RoleVO> roleList = info.getList(); //分頁數據
RolePageVO conditionVo = (RolePageVO)request.getAttribute("rolePageVO");//參數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM