2. 전체 사원 조회하기
package jdbc.exam;
import java.util.Scanner;
public class DAOTest {
public static void main(String[] args) {
Scanner key = new Scanner(System.in);
System.out.println("******인사관리시스템********");
System.out.println("1. 사원등록");
System.out.println("2. 전체사원조회");
System.out.println("3. job별로 사원조회하기");
System.out.println("4. SMITH부서의 전 사원의 급여를 500올려주기");
System.out.println("5. comm이 0인 직원 삭제하기");
System.out.println("6. 각 매니저의 정보 조회하기(매니저 아이디로 조회하기)");
System.out.print("원하는 작업을 선택하세요:");
int choice = key.nextInt();
show(choice);
}
public static void show(int choice){
MenuUI ui = new MenuUI();
switch(choice){
case 1:
ui.insertMenu();
break;
case 2:
ui.selectMenu();
break;
case 3:
ui.searchMenu();
break;
case 4:
ui.updateMenu();
break;
case 5:
ui.deleteMenu();
break;
case 6:
ui.getInfoMenu();
break;
}
}
}
- main메소드에서 show메소드 호출, show메소드에서 select메소드 호출
package jdbc.exam;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import jdbc.DBUtil;
public class CustomerDAO2 {
public ArrayList<CustomerDTO2> select() { // 2.emp전체사원조회
String sql = "select * from emp";
ArrayList<CustomerDTO2> userlist = new ArrayList<CustomerDTO2>();
CustomerDTO2 user = null;
Connection con = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
try {
con = DBUtil.getConnect();
ptmt = con.prepareStatement(sql);
rs = ptmt.executeQuery();
System.out.println("조회된 ResultSet객체 : " + rs);
while (rs.next()) {
System.out.print(rs.getString("empno") + "\t");
user = new CustomerDTO2(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getDate(5),
rs.getInt(6), rs.getInt(7), rs.getInt(8));
userlist.add(user);
}
System.out.println("리스트 사이즈 : " + userlist.size());
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(rs, ptmt, con);
}
return userlist;
}
}
- 우선 받아오는 데이터가 하나가 아니기 때문에 적절한 자료구조를 이용해 담아줘야 한다. 객체를 만들어서 데이터를 넘겨줘야 하기 때문에 CustomerDTO2타입의 ArrayList 바구니(userlist)를 만들고, ResultSet을 이용해 2개 이상의 데이터를 탐색해준다.
- ResultSet에 데이터가 있는 동안 받아온 데이터를 CustomerDTO2타입의 변수 user에 담아주고 이를 아까 만들어둔 바구니에 넣어준다. 넘겨줄 리턴값의 타입이 CustomerDTO2타입의 ArrayList이기 때문에 MenuUI클래스에서도 ArrayList<CustomerDTO2>타입 변수를 만들어 메소드의 리턴값을 받아준다.
package jdbc.exam;
import java.util.ArrayList;
import java.util.Scanner;
public class MenuUI {
Scanner key = new Scanner(System.in);
CustomerDAO2 cd = new CustomerDAO2();
public void selectMenu(){
System.out.println("*******전체사원조회********");
ArrayList<CustomerDTO2> userlist = cd.select();
int size = userlist.size();
for (int i = 0; i < size; i++) {
CustomerDTO2 user = userlist.get(i);
System.out.println("사원번호 : " +user.getEmpno());
System.out.println("이름 : " +user.getEname());
System.out.println("직업 : " +user.getJob());
System.out.println("매니저번호 : " +user.getMgr());
System.out.println("입사일 : " +user.getHiredate());
System.out.println("급여 : " +user.getSal());
System.out.println("보너스 : " +user.getComm());
System.out.println("부서번호 : " +user.getDeptmo());
System.out.println("====================================================");
}
}
}
- for문
size()메소드를 for문 안에 넣고 돌리게 되면 비효율적이므로 밖으로 빼서 int타입 변수에 담아주면 userlist의 사이즈만큼
for문이 돌아가면서 select메소드로 받아온 데이터를 하나씩 출력하게 된다.
- 향상된 for문
for (CustomerDTO alluser : userlist) {
System.out.println(alluser.toString());
}
userlist의 담겨있는 데이터를 모두 alluser 담아준다. alluser그대로 출력하게 되면 주소값이 나오므로 CustomerDTO2의 toString메소드를 이용해 출력해주면 처음 입력된 순서대로 데이터가 출력된다.
'Spring' 카테고리의 다른 글
2022-11-23 스프링 customer패키지 리뷰 (0) | 2022.11.24 |
---|---|
2022-11-23 Spring에 대해서 (0) | 2022.11.23 |
2022-11-11 JDBC 이론 정리 (0) | 2022.11.12 |
2022-11-11 Servlet 등록, 요청 (0) | 2022.11.12 |
2022-11-09~10 JDBC 1. insert - 사원등록하기 / 드라이버 로딩, DB서버 연결, 자원반납 (0) | 2022.11.11 |
댓글