백엔드/Database

Jdbc(ojdbc) 게시글 개수, 마지막 페이지 | TIL_139

ran4 2022. 8. 31. 20:53

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++;
}