getNoticeList 메서드의 SQL 쿼리문 작성하기.
--getNoticeList
서브 쿼리 이용하기
SELECT * FROM(
SELCT ROWNUM NUM, N.*
FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) N
)
WHERE NUM BETWEEN 1 AND 5;
ROW_NUMBER() 함수 이용
SELECT * FROM
(
SELECT ROW_ NUMBER() OVER (ORBER BY REGDAGE DESC) NUM,
NOTICE.* FROM NOTICE
)
WHERE NUM BETWEEN 6 AND 10;
public List<Notice> getNoticeList(String field, String query, int page) {
String sql = "SELECT * FROM(" +
" SELCT ROWNUM NUM, N.* " +
" FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) N" +
")" +
"WHERE NUM BETWEEN 1 AND 5 ";
return null;
}
코드를 작성할 때 띄어쓰기 주의 *
NEXT, PREV
다음이나 이전에 해당되는 글 구하기.
게시글은 삭제될 수 있기 때문에 -1을 하는 것만으로 해결할 수 없다.
다음 글 구하기
1. 먼저 해당 ID보다 REGDATE가 큰 ID의 레코드를 가져온다.
SELECT ID FROM NOTICE WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHRE ID =3)
2 가져온 다음 오름차순으로 자동 정렬되기 때문에 첫 번째 레코드를 가져온다.
ROWNUM =1
3. 해당되는 ID의 NOTICE 전부를 가지고 온다.
SELECT * FROM NOTICE
WHERE ID = (SELECT ID FROM NOTICE WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHERE ID=?)
AND ROWNUM = 1
);
이전 글 구하기.
1. 해당 ID보다 REGDATE 가 낮은 ID를 가져온다.
SELECT ID FROM NOTICE WHERE REGDATE < (SELECT REGDATE FROM NOTICE WHERE ID=? )
2. 이전 글은 내림차순으로 정렬을 해 첫 번째 글을 가져와야 한다.
SELECT ID FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC)
WHERE REGDATE < (SELECT REGDATE FROM NOTICE WHERE ID=?)
AND ROWNUM =1
전체 서비스 코드
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) {
String sql = "SELECT ID FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC)"
+ " WHERE REGDATE < (SELECT REGDATE FROM NOTICE WHERE ID=?)" + "AND ROWNUM =1";
return null;
}
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 46일차 -70 (0) | 2020.05.01 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 46일차 -69 (0) | 2020.05.01 |
자바기반의 웹&앱 응용 SW개발자 양성과정 45일차 -67 (0) | 2020.05.01 |
자바기반의 웹&앱 응용 SW개발자 양성과정 44일차 -66 (0) | 2020.05.01 |
자바기반의 웹&앱 응용 SW개발자 양성과정 43일차 -65 (0) | 2020.05.01 |
댓글