반응형
	//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;
	}	
}

 

+ Recent posts