반응형
//Notice페이지 호출하는 메소드
public Notice getNotice(int id) {
String sql = "SELECT * FROM NOTICE WHERE ID =?";
return null;
}
public Notice getNextNotice(int id) {
return null;
}
public Notice getPrevNotice(int id) {
return null;
}
NOTICE 페이지를 호출하는 메소드들을 구해보자>
먼저 Notice의 전체 내용을 출력하는 sql문은 어렵지 않으므로 바로 구현했다.
이번 시간에는 현재 주어진id로 다음 글을 달라고 요구하는 sql문을 작성해보자
->게시글은 언제든 삭제될 수 있기에 ID값은 항상 연속되지 않음을 인지해야한다.
다음 글을 얻기 위해서는 다음글에 해당하는ID를 얻어야 한다.
그 ID를 얻기 위해서는 3번(임의의 기준)에 해당되는 게시글의 REGDATE보다 큰 REGDATE을 갖고 있는 게시글을 한정해서 ID 리스트를 뽑아야 하겠다.
-> 5번 ID는 구해진 목록의 첫번째에 해당해야 할 텐데 그 방법은 ROWNUM을 활용하면 된다.
그러기 위해선 구해진 목록을 뒤집어야한다. (기존 역정렬을 순차정렬로)
->3번 ID의 REDGATE보다 큰 REGDATE를 가진 ID(여기선 4번) 을 가져오는 식을 만들어보자.
->이를 통해 다음 ID값을 구하게 됐다. 이 식을 서브쿼리로 쓰는, ID 4의 모든 정보를 출력하는 쿼리문을 작성하자
===NoticeService.java===
public Notice getNextNotice(int id) {
String sql ="SELECT * FROM NOTICE " +
" WHERE ID = ( " +
" SELECT ID FROM NOTICE " +
" WHERE REGDATE >(SELECT REGDATE FROM NOTICE WHERE ID = 3) " +
" AND ROWNUM =1 " +
" )";
return null;
}
===NoticeService.java 전체코드===
package com.mybulletin.web.service;
import java.util.List;
import com.mybulletin.web.entity.Notice;
public class NoticeService {
//페이지 요청 메소드
public List<Notice> getNoticeList(){
return getNoticeList("title", "", 1);
}
public List<Notice> getNoticeList(int page){
return getNoticeList("title", "", page);
}
public List<Notice> getNoticeList(String field, String query, int page){
String sql = "SELECT * FROM ( " +
" SELECT ROWNUM NUM, NOTICE.* " +
" FROM NOTICE ORDER BY REGDATE DESC " +
" ) " +
"WHERE NUM BETWEEN 6 AND 10" ;
return null;
}
//Notice수 구하는 메소드
public int getNoticeCount() {
return getNoticeCount("title", "");
}
public int getNoticeCount(String field, String query) {
return 0;
}
//Notice페이지 호출하는 메소드
public Notice getNotice(int id) {
String sql = "SELECT * FROM NOTICE WHERE ID =?";
return null;
}
public Notice getNextNotice(int id) {
String sql ="SELECT * FROM NOTICE " +
" WHERE ID = ( " +
" SELECT ID FROM NOTICE " +
" WHERE REGDATE >(SELECT REGDATE FROM NOTICE WHERE ID = 3) " +
" AND ROWNUM =1 " +
" )";
return null;
}
public Notice getPrevNotice(int id) {
return null;
}
}