[TIL] 구디아카데미 15일차: ResultSet을 다른타입으로 변경하기

Mijin·2023년 4월 25일
0

TIL

목록 보기
14/21
post-thumbnail

✅ResultSet→ArrayList/다른 VO타입

  • 자료구조에는 set, list, map이 있다.
    set은 자료순서가 없고, list는 인덱스가 있기 때문에 순서가 있다.
  • 따라서 특정환경에서만 사용하는 자료구조API인 ResultSet을 모든 자바코드에서 사용 가능한 일반적인 자료구조타입(list 혹은 다른VO타입)으로의 변경이 필요하다
  • 결과값이 여러행인 경우에는 ArrayList로 변경하면 되고, 하나인 경우 int나 VO타입과 같이 결과값과 일치하는 타입으로 변경하면 된다

⌨결과값이 한 행인 경우

ResultSet타입의 rs를 Notice타입으로 변경한다

ResultSet rs = stmt.executeQuery();
	// 모델데이터 
	Notice notice = null; // int totalCnt; ArrayList<Notice> list
	// Notice notice = new Notice();
	if(rs.next()) {
		notice = new Notice();
		notice.noticeNo = rs.getInt("notice_no");
		notice.noticeTitle = rs.getString("notice_title");
		notice.noticeContent = rs.getString("notice_content");
		notice.noticeWriter = rs.getString("notice_writer");
		notice.createdate = rs.getString("createdate");
		notice.updatedate = rs.getString("updatedate");
	}

⌨결과값이 여러 행인 경우

ResultSet타입의 rs를 ArrayList로 변경한다

ResultSet rs = stmt.executeQuery();	
	// 자료구조 ResultSet타입을 일반적인 자료구조타입(자바 배열 or 기본API 자료구조타입 List, Set, Map)
	// ResultSet -> ArrayList<Notice>
	ArrayList<Notice> noticeList = new ArrayList<Notice>();
	while(rs.next()) {
		Notice n = new Notice();
		n.noticeNo = rs.getInt("noticeNo");
		n.noticeTitle = rs.getString("noticeTitle");
		n.createdate = rs.getString("createdate");
		noticeList.add(n);
	}

💪느낀점

  • 내가 만들어가는 페이지에 새로 배운 부분이 얹어지면서 점점 나아지고 있는 것에 뿌듯함이 느껴지고, 앞으로 새로운 기능을 구현하게 될 것이 벌써부터 기대된다!
  • 과제로 ResultSet타입을 다른 자료구조로 바꾸라고 하셨을 때 아무런 생각없이 ArrayList로 모두 바꾸고 있었다.
    그런데 다른 분들의 질문으로 한 행일 경우에는 list로 받을 필요가 없다는 것을 깨달았다.
    이 부분은 정말 생각지도 않고 있었다;;
    그냥 복사-붙여넣기가 아니라 왜 이 코드가 작성되어야 하는지를 생각하며 코드를 작성해야 함을 항상 잊지말자!
profile
개발자로 가는 길 🏃‍♀️

0개의 댓글