‘나의게시글’ 페이징과 동일
package com.spring.gami.mypage.like.controller;
@Controller("likeController")
@RequestMapping("/mypage/like")
public class LikeController {
@Autowired
MyhomeDomain myhomeDomain;
@Autowired
LikeService likeService;
// 게시글 리스트 출력
@RequestMapping(value = "/likeList.do", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView myHomelist(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws Exception {
MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
String memberId = memberDomain.getMemberId();
String _section = request.getParameter("section"); //사용자가 볼 게시글수
String _pageNum = request.getParameter("pageNum"); //페이지번호
int section = Integer.parseInt(((_section == null) ? "1" : _section));
int pageNum = Integer.parseInt(((_pageNum == null) ? "1" : _pageNum));
//페이징
int pageSize = 6; //한페이지에 보여줄 게시글수
int startRow = (pageNum-1) * pageSize+1; //시작
int endRow = pageNum * pageSize; //마지막
//Map
Map<String, Object> pagingMap = new HashMap<>();
pagingMap.put("section", section);
pagingMap.put("pageNum", pageNum);
pagingMap.put("memberId", memberId);
pagingMap.put("startRow", startRow); //시작행
pagingMap.put("endRow", endRow); //끝행
Map<String, Object> myhomeMap = likeService.selectLikeList(pagingMap); // 게시글 조회
int likeCount = likeService.likeCount(memberId); // 좋아요 수 조회
// 총 게시글 수 계산, 기본값 설정
int totalArticles = 0;
if (myhomeMap.get("totalArticles") != null) {
totalArticles = (int) myhomeMap.get("totalArticles");
}
// 총 페이지 수 계산
int totalPages = (int) Math.ceil((double) totalArticles / pageSize);
ModelAndView mav = new ModelAndView("/mypage/like/likeList");
mav.addObject("myhomeMap", myhomeMap); // "myhomeMap"라는 이름으로 데이터를 JSP로 전달
mav.addObject("likeCount", likeCount);
mav.addObject("section", section);
mav.addObject("memberId", memberId);
mav.addObject("totalPages", totalPages); // 총페이지수 값을 추가
return mav;
}
}
package com.spring.gami.mypage.like.service;
@Service("likeService")
public class LikeServiceImpl implements LikeService{
@Autowired
private LikeDAO likeDAO;
@Autowired
private MyhomeDomain myhomeDomain;
@Override
public Map<String, Object> selectLikeList(Map<String, Object> pagingMap) throws Exception {
System.out.println("안녕 난 서비스 이제 페이징을 보내볼게?? 내가 답이 없으면 못 온거야");
Map<String, Object> articlesMap = new HashMap();
List<MyPageMyhomeDomain> articlesList = likeDAO.selectLikeList(pagingMap); //게시글목록
String memberId = (String) pagingMap.get("memberId");
int totalArticles = likeDAO.selectTotArticle(memberId); // 전체 게시글 수 count
articlesMap.put("articlesList", articlesList);
articlesMap.put("totalArticles", totalArticles);
return articlesMap;
}
@Override
public int likeCount(String memberId) throws Exception {
return likeDAO.likeCount(memberId);
}
}
package com.spring.gami.mypage.like.dao;
@Repository("likeDAO")
public class LikeDAOImpl implements LikeDAO{
@Autowired
private SqlSession sqlSession;
@Autowired
private MyhomeDomain myhomeDomain;
private MyPageMyhomeDomain myPageMyhomeDomain;
@Override
public List<MyPageMyhomeDomain> selectLikeList(Map<String, Object> pagingMap) throws DataAccessException {
List<MyPageMyhomeDomain> myhomeList = sqlSession.selectList("mapper.like.selectLikeList", pagingMap);
return myhomeList;
}
@Override //페이지 수 count
public int selectTotArticle(String memberId) throws DataAccessException {
int totArticles = sqlSession.selectOne("mapper.like.selectTotArticle", memberId);
return totArticles;
}
@Override
public int likeCount(String memberId) throws DataAccessException {
return sqlSession.selectOne("mapper.like.likeCount", memberId);
}
}
<?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="mapper.like">
<!-- Result Map 정의 -->
<resultMap id="MyLikeResultMap" type="com.spring.gami.board.board_myhome.domain.MyhomeDomain">
<id property="boardMyhomeArticleNo" column="boardMyhomeArticleNo"/>
...
<result property="startRow" column="startRow"/> <!-- 페이징 추가 -->
<result property="endRow" column="endRow"/> <!-- 페이징 -->
<result property="imageFileName" column="imageFileName"/>
</resultMap>
<!-- 좋아요 리스트 조회 -->
<select id="selectLikeList" resultMap="MyLikeResultMap" parameterType="map">
<![CDATA[
SELECT * FROM (
SELECT b.*, i.imageFilename, ROWNUM as rnum
FROM (
SELECT *
FROM boardMyhome
WHERE boardMyhomeArticleNo IN (
SELECT boardMyhomeArticleNo
FROM boardMyHomeLikes
WHERE memberId = #{memberId}
)
ORDER BY boardMyhomeUpdated DESC
) b
LEFT JOIN image i
ON b.boardMyhomeArticleNo = i.articleNo
AND i.imageType = '커버'
WHERE ROWNUM <= #{endRow}
)
WHERE rnum >= #{startRow}
]]>
</select>
<!-- 전체 페이지 수 -->
<select id="selectTotArticle" resultType="int">
<![CDATA[
select count(*) from boardMyHomeLikes where memberId= #{memberId}
]]>
</select>
<select id="likeCount" parameterType="String" resultType="int">
<![CDATA[
select count(boardMyhomeArticleNo)
from boardMyHomeLikes
where memberId = #{memberId}
]]>
</select>
</mapper>