myHomeList - 복사본.drawio.png

myHomelist controller

@RequestMapping(value = "/myHomeList.do", method = {RequestMethod.GET, RequestMethod.POST})
    public ModelAndView myHomelist(@RequestParam(defaultValue = "1") int section,  @RequestParam(defaultValue = "1") int pageNo,
    						HttpServletRequest request, HttpServletResponse response) throws Exception {

        // 게시글목록 + 페이징 추가  	 
    	 int pageSize = 12; // 한 페이지에 12개
		 
	     int startPage = (section - 1) * 100 + (pageNo - 1) * pageSize + 1;
	     int endPage = (section - 1) * 100 + (pageNo * pageSize);             	     
     	
     	List<MyhomeDomain> myhomeList = myhomeService.listArticles(startPage,endPage); // 게시글 조회
     	//int totalArticles = myhomeService.totalArticles(); // 총 게시글 수
     	int totalArticles = 500; // 총 게시글 수 테스트용
     	
     	int totalPages = (int) Math.ceil((double)totalArticles/pageSize); // 총 페이지수 
	     	
     	System.out.println("section?"+section+",pageNo?"+pageNo);
     	System.out.println("startPage?"+startPage+",endPage?"+endPage+",totalArticles?"+totalArticles+",totalPages?"+totalPages);
     	
        ModelAndView mav = new ModelAndView("/board/board_myhome/myHomeList");
        
        mav.addObject("myhomeList", myhomeList); // "myhomeList"라는 이름으로 데이터를 JSP로 전달
        mav.addObject("section",section);
        mav.addObject("pageNo",pageNo);
        mav.addObject("startPage",startPage);
        mav.addObject("endPage",endPage);
        mav.addObject("totalArticles",totalArticles);
        mav.addObject("totalPages",totalPages);       
        return mav;
	}

service

public List<MyhomeDomain> listArticles(int startPage,int endPage) throws Exception {		 
	      
		List<MyhomeDomain> myhomeList = myhomeDAO.selectAllArticlesList(startPage,endPage); // 게시글 조회
		 return myhomeList;
		 }

DAO

    public List selectAllArticlesList(int startPage, int endPage) throws DataAccessException {
    	
    	 Map<String, Object> pages = new HashMap<>();
    	 	pages.put("startPage", startPage);
    	 	pages.put("endPage", endPage);
    	
    	List<MyhomeDomain> myhomeList = sqlSession.selectList("mapper.board.selectAllArticlesList",pages);
    	System.out.println("myhomeList 조회 결과: " + myhomeList);
    	return myhomeList;
    	}

mapper

	    SELECT *
		FROM (
		    SELECT 
		        b.*, 
		        i.imagefilename,
		        ROW_NUMBER() OVER (ORDER BY b.boardMyhomeUpdated DESC) AS recNum
		    FROM boardMyhome b
		    JOIN image i ON b.boardmyhomearticleno = i.articleno
		    WHERE i.imagetype = '커버'
		) 
		 WHERE recNum BETWEEN #{startPage} AND #{endPage}

myHomeList.jsp

<!-- 게시글 정보 -->
   <div class="card-content">
     <h3>
	 <!-- 조회수 증가 후 게시글 상세페이지 이동 -->
		<a href="${contextPath}/board/board_myhome/viewCount.do?boardMyhomeArticleNo=${article.boardMyhomeArticleNo}">
			${article.boardMyhomeTitle}</a>
      </h3>
         <p>작성자: ${article.memberId}</p>
         <p>❤️ ${article.boardMyhomeLikes} | 👀 ${article.boardMyhomeViews}</p>
         <p>${article.boardMyhomeUpdated}</p>
         <p>${article.boardMyhomeArticleNo}</p> <!-- 확인용,나중에 지울 것 -->
	</div>

myHomeList.jsp - pagination

<ul class="pagination">
	<c:if test="${totalArticles != null }" >
        <c:set var="startPageNum" value="${(section - 1) * 10 + 1}" />
        <c:set var="endPageNum" value="${startPageNum + 9}" />
        <c:if test="${endPageNum > totalPages}">
            <c:set var="endPageNum" value="${totalPages}" />
        </c:if>

        <!-- 이전 버튼 -->
        <c:if test="${section > 1}">
            <a href="?section=${section-1}&pageNo=1"> ‹ </a>
        </c:if>

        <!-- 페이지 번호 -->
        <c:forEach var="i" begin="${startPageNum}" end="${endPageNum}">
                <a href="?section=${section}&pageNo=${i}" class="${i == pageNo ? 'active' : ''}">
                    ${i}
                </a>
        </c:forEach>

        <!-- 다음 버튼 -->
        <c:if test="${endPageNum < totalPages}">
            <a href="?section=${section+1}&pageNo=1"> › </a>
        </c:if>
        
	</c:if>
</ul>