https://www.youtube.com/playlist?list=PLq8wAnVUcTFWxwoc41CqmwnO-ZyRDL0og
강의를 듣고 정리한 내용입니다
마지막 페이지를 알 수 없기에 마지막 페이지를 구하는 로직이 필요하다
-> printNoticeList() 메서드의 list값을 page로 바꾼다
List<Notice> list = service.getList(page);
게시글 개수 구하기
데이터 베이스에 들어있는 전체 목록의 개수를 알아야 한다
전체 목록의 개수를 알아야 몇 개의 페이지가 될 것인지 알 수 있다
-> 다음 페이지의 존재 여부를 알 수 있다
NoticeConsole
전체 개수를 관리하는 변수를 선언한다
private int count;
SQL문
SELECT COUNT(ID) COUNT FROM NOTICE;
**COUNT(ID) 뒤의 COUNT -> 별칭
printNoticeList()
목록을 얻어올 때 항상 count를 구해야 한다
count = service.getCount(); //현재 db테이블에 추가
NoticeService에 메서드 추가
//단일값을 얻어온다는 의미 = Scalar
public int getCount() {
int count = 0;
String sql = "SELECT COUNT(ID) COUNT FROM NOTICE";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, uid, pwd);
Statement st = conn.createStatement(); //ststment로 변경
ResultSet rs = st.executeQuery(sql); //넘기는 sql값이 없기 때문에 할당
List<Notice> list = new ArrayList<Notice>();
//결과 집합에서 값을 꺼낸다
if(rs.next())
count = rs.getInt("COUNT");
rs.close();
st.close();
conn.close();
return count;
}
마지막 페이지 구하기
현재 페이지는 몇번째인지 구한다
lastPage 변수를 선언한다
lastPage는 계속 바뀌는 값이기 때문에 printNotList()라는 메서드 안에 선언한다
public void printNoticeList() throws ClassNotFoundException, IOException, SQLException {
List<Notice> list = service.getList(page);
count = service.getCount(); //항상 값을 구해야 한다
int lastPage = count / 10;
-> 나눠서 나머지가 생길 수 있다 (적절하지 않음)
lastPage = count % 10 > 0 ? lastPage+1 : lastPage;
-> 조건을 추가해주었다
System.out.printf(" %d/%d pages\n", page, lastPage);
moveNextList() 메서드 생성
이 메서드에서 사용하는 lastPage는 메서드 속 lastPage값과 다를 수 있기에
새로 선언해주어야 한다
public void moveNextList() throws ClassNotFoundException, SQLException {
count = service.getCount(); //항상 값을 구해야 한다
int lastPage = count / 10;
lastPage = count % 10 > 0 ? lastPage+1 : lastPage;
if(page == lastPage) {
System.out.println("=====================");
System.out.println("[이전 페이지가 없습니다.]");
System.out.println("=====================");
return;
}
page++;
}
'백엔드 > Database' 카테고리의 다른 글
Mybatis - <sql>, <include> | TIL_159 (0) | 2022.11.03 |
---|---|
Jdbc(ojdbc) 검색 서비스 추가하기 | TIL_140 (0) | 2022.09.02 |
Jdbc(ojdbc) 페이징 쿼리 | TIL_138 (0) | 2022.08.29 |
Jdbc(ojdbc) 사용자 인터페이스 | TIL_137 (0) | 2022.08.24 |
Jdbc(ojdbc) crud 서비스 클래스 | TIL_136 (0) | 2022.08.19 |