分頁要傳入當前所在頁數和每頁顯示記錄數,再分頁查詢數據庫,部分代碼如下所示。
傳入參數實體類:
public class MessageReq { PRivate String memberId;//會員id private int currentPage;//當前頁 private int pageSize;//一頁多少條記錄 private int startIndex;//從哪一行開始 private int endIndex;//從哪一行結束 public String getMemberId() { return memberId; } public void setMemberId(String memberId) { this.memberId = memberId; } public int getCurrentPage() { return currentPage; } public int getStartIndex() { return startIndex; } public int getEndIndex() { return endIndex; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public void setEndIndex(int endIndex) { this.endIndex = endIndex; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } //根據當前所在頁數和每頁顯示記錄數計算出startIndex和endIndex public void setStartIndexEndIndex(){ this.startIndex=(this.getCurrentPage()-1)*this.getPageSize(); this.endIndex= (this.getCurrentPage()-1)*this.getPageSize()+this.getPageSize(); }}分頁工具類:
public class Page<T>{ private int currentPage = 1; // 當前頁 private int pageSize = 20; //每頁顯示記錄數 private int startRecord = 1; //起始查詢記錄 private int totalPage = 0; //總頁數 private int totalRecord = 0; //總記錄數 private List<T> datas; public Page(){} public Page(int currentPage, int pageSize) { this.currentPage = currentPage; this.pageSize = pageSize; if(this.currentPage <= 0) { this.currentPage = 1; } if(this.pageSize <=0) { this.pageSize = 1; } } public Page(int currentPage, int pageSize, int totalRecord) { this(currentPage, pageSize); this.totalRecord = totalRecord; if(this.totalRecord <=0) { this.totalRecord = 1; } } public int getCurrentPage() { if(currentPage <= 0) { return 1; } return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalRecord() { if(totalRecord < 0) { return 0; } return totalRecord; } public void setTotalRecord(int totalRecord) { this.totalRecord = totalRecord; } public List<T> getDatas() { return datas; } public void setDatas(List<T> datas) { this.datas = datas; } public int getTotalPage() { if(totalRecord <= 0) { return 0; } int size = totalRecord / pageSize;//總條數/每頁顯示的條數=總頁數 int mod = totalRecord % pageSize;//最后一頁的條數 if(mod != 0) { size++; } totalPage = size; return totalPage; } public int getStartRecord() { startRecord = (getCurrentPage() - 1) * pageSize; return startRecord; }}Manager層
public interface MessageManager { //分頁查詢消息 public Page<Message> queryMessage(MessageReq req);}@Componentpublic class MessageManagerImpl implements MessageManager{ @Autowired private MessageMapper messageMapper; @Override public Page<Message> queryMessage(MessageReq req) { Page<Message> page = new Page<Message>(); int pageCount = messageMapper.getMessageNum(req.getMemberId());//得到總條數 page = initPage(page, pageCount, req); List<Message> message= messageMapper.queryMessage(req); if (!message.isEmpty()) { page.setDatas(message); } return page; } private Page<Message> initPage(Page<Message> page, int pageCount, MessageReq messageReq) { page.setTotalRecord(pageCount); page.setCurrentPage(messageReq.getCurrentPage()); page.setPageSize(messageReq.getPageSize()); messageReq.setStartIndexEndIndex(); return page; } }Dao層
public interface MessageMapper { //分頁查詢 public List<Message> queryMessage(Messagereq); //查詢總條數 public int getMessageNum(String memberId);}mybatis的.xml文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.sf.ccsp.member.dao.mapper.MessageMapper"> <resultMap id="MessageResultMap" type="com.sf.ccsp.member.dao.domain.message.Message" > <result column="ID" property="id" jdbcType="VARCHAR" /> <result column="MEMBERID" property="memberId" jdbcType="VARCHAR" /> <result column="MESSAGE_CLASSIFY" property="messageClassify" jdbcType="VARCHAR" /> <result column="MESSAGE_CODE" property="messageCode" jdbcType="VARCHAR" /> <result column="MESSAGE_CONTENT" property="messageContent" jdbcType="VARCHAR" /> <result column="MESSAGE_STATUS" property="messageStatus" jdbcType="VARCHAR" /> </resultMap> <select id="queryMessage" resultMap="MessageResultMap" parameterType="com.sf.ccsp.member.client.request.MessageReq"> select * from cx_customer_message where MEMBERID = #{memberId, jdbcType=VARCHAR} and ISVALID = '1' LIMIT #{startIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER} </select> <select id="getMessageNum" resultType="INTEGER" parameterType="String"> select count(*) from cx_customer_message where MEMBERID = #{memberId, jdbcType=VARCHAR} </select></mapper>新聞熱點
疑難解答