
게시판 페이징(paging) 처리하기 (1) 에서는 jsp, js 에 관련된 코드 정리하였고
(2) 에서는 나머지 코드를 정리하여고 한다.
3. Controller.java
<java />
@RequestMapping(value = "/getMyBoardList.ajax", method = RequestMethod.POST, produces="text/plain;charset=UTF-8")
@ResponseBody
public String getMyBoardList(HttpServletRequest request, HttpServletResponse response, Model model,
@RequestParam(value = "mainParams", required = false, defaultValue = "{}") String mainParams
) throws Exception {
String decodeResult = URLDecoder.decode(XssPreventer.unescape(mainParams), "UTF-8");
Map<String, Object> searchParams = (new Gson()).fromJson(decodeResult, Map.class);
Map<String, Object> result = new HashMap<String, Object>();
int pagesize = getPagesize(searchParams);
int pageno = getPageNo(searchParams);
searchParams.put("startRownum", ((pageno - 1) * pagesize));
searchParams.put("pagesize", pagesize);
List<Board> lists = myBoardService.getMyBoardList(searchParams);
int totalCnt = myBoardService.getMyBoardListTotalCnt(searchParams);
result.put("lists", lists);
result.put("totalCnt", totalCnt);
return (new Gson()).toJson(result);
}
→ js에서 파라미터로 보낸 pageNo, pagesize를 조회할 때 사용하도록
startRownum, pagesize 를 계산하여 searchParams에 넣어서 보냄
→ startRownum : pageNo 가 1일때 startRownum은 0 , pageNo 가 2일때 startRownum은 5
쿼리 조회시 limit 을 사용했는데 시작점으로 들어감(첫번째 파라미터가 0부터 시작)
→ pagesize : 게시물을 몇 개를 가져올지
4. Service.java
<java />
public List<Board> getMyBoardList(Map<String, Object> searchParams) {
try {
return myBoardDao.getMyBoardList(searchParams);
} catch(Exception e) {
e.printStackTrace();
return null;
}
}
5. Dao.java
<java />
public List<Board> getBoardList(Map<String, Object> searchParams) throws Exception {
return getSqlSessionTemplate().selectList("myboard.getBoardList", searchParams);
}
6. sql.xml
<sql />
<select id="getBoardList" parameterType="java.util.Map" resultType="com.mayday.mufun.model.Board">
select
@num:=@num+1 AS rn, numno, boardno, title, contents, vieword, regdate, viewcnt, memberno, membername, boardname, depth, groupno, answerstatus
from(
select
t1.numno, t1.boardno, t1.title, t1.contents, t1.vieword,
DATE_FORMAT(t1.regdate,'%Y-%m-%d') regdate, t1.viewcnt, t1.memberno,
t2.membername, t1.depth, t1.groupno, t1.answerstatus
from tb_board t1
inner join tb_member t2 ON t1.memberno = t2.memberno
where t1.memberno = #{memberno}
and t1.groupno = t1.numno
order by t1.regdate desc
)as tt1, (select @num:=0) R
<if test='pageNo > 0'>
limit ${startRownum}, ${pagesize}
</if>
</select>
- 한 페이지당 5개의 게시글을 볼 수 있도록 설정

728x90
'Backend > Spring' 카테고리의 다른 글
[Lombok] 롬복 사용하기 (0) | 2021.08.04 |
---|---|
[Lombok] 롬복 설치하기 (0) | 2021.08.04 |
스프링 게시판 - 페이징(paging) 처리하기 (1) (0) | 2021.08.03 |
Tiles (0) | 2021.08.02 |
@RequestParam 어노테이션 사용하기 (0) | 2021.07.01 |