JDBC - SelectAll

Jan 22, 2024
JDBC - SelectAll

notion image
  1. 자바에서는 재사용성을 위해 ?을 사용해서 미완성 쿼리를 만듦
쿼리를 완성시킬 코드가 필요함
  1. 쿼리가 버퍼에 담기고 형성된 스트림을 통해서 DB에 요청함
  1. DB에서 받은 Table 데이터를 자바 오브젝트로 변환해서 읽음
    1. 💡
      DB로부터 데이터를 가져와서 오브젝트로 파싱함
 
  • Table의 데이터 타입이 여러가지이기 때문에 배열에 담을 수는 없음
  • 하나의 클래스로 반복되는 데이터 타입은 벡터에 담을 수 있음
여러가지 타입을 담을 수 있는 형태 : class
💡
다 같은 타입이 연속적으로 있기 때문에 벡터, 컬렉션에 담아야함
  • 연속적인 데이터 : 벡터 / 선
  • 하나의 데이터 : 스칼라 / 점
  • 가로와 세로가 있으면 메트릭스
  • 여러 건을 조회하면 그 횟수만큼 커서가 내려가야 함
예시) 4건을 조회하면 커서 4번 내려야 함
💡
전체 조회 시 거꾸로 조회함 → desc : 내림 차순!
데이터베이스에 몇 건의 데이터가 있는지 알 수 가 없음 → while을 false까지 돌려야 함
 

1) 데이터를 담기 위한 클래스형 자료형

package model; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.ToString; import java.sql.Timestamp; /* * DB에 Select 한 데이터를 담기 위한 오브젝트 */ @ToString @AllArgsConstructor @Getter public class Account { private int number; private String password; private int balbance; //java.sql의 Timestamp private Timestamp createdAt; }
 

2) selectAll 본 코드 작성하기 - executeQuery() 사용

package dao; import db.DBConnection; import model.Account; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; /* * DAO - Data Access Object * SRP - 단일 책임의 원칙*/ public class BankDAO { public List<Account> selectAll(){ Connection conn = DBConnection.getInstance(); try{ String sql = "select * from account_tb order by number desc"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); List<Account> accountList = new ArrayList<>(); while(rs.next() == true) { Account account = new Account( rs.getInt("number"), rs.getString("password"), rs.getInt("balance"), rs.getTimestamp("created_at") ); accountList.add(account); } return accountList; }catch (Exception e){ e.printStackTrace(); } return null; } }
 

3) selectAll 테스트

package dao; import model.Account; import org.junit.jupiter.api.Test; import java.sql.SQLOutput; import java.util.List; public class BankDAOTest { @Test public void selectAll_test(){ //given //when BankDAO dao = new BankDAO(); List<Account> accountList = dao.selectAll(); //System.out.println(accountList.size()); System.out.println(accountList); } }
notion image
 
Share article

vosw1