728x90

 

MVC패턴 적용

 

Run

View

Controller

Model.DAO

Model.VO

 

package MVC.run;
import MVC.view.pView07;

public class pRun07 {
	public static void main(String[] args) {
		
		pView07 pv = new pView07();
		pv.mainMenu();
	}
}

 

package MVC.view;
import java.util.ArrayList;
import java.util.Scanner;

import MVC.controller.pController07;
import MVC.model.vo.pModelVo07;

public class pView07 {
// view : 화면
//	   		   사용자에게 보여지는 곳	
	private Scanner sc = new Scanner(System.in);
	
	
	public void mainMenu() {
		
		pController07 pc = new pController07();
		int user = 0;
		
		do {
			
			System.out.println("====================");
			System.out.println("[Main Menu]");
			System.out.println("1.전체 사원 정보 조회");
			System.out.println("2.사번으로 사원 정보 조회");
			System.out.println("3.새로운 사원 정보 추가");
			System.out.println("4.사번으로 사원 정보 수정");
			System.out.println("5.사번으로 사원 정보 삭제");
			System.out.println("0.프로그램 종료");
			System.out.println("====================");
			System.out.print("메뉴 선택 : ");
			user = Integer.parseInt(sc.nextLine());
			
			switch(user) {
			case 1: pc.selectAll(); break;
			case 2: break;
			case 3: break;
			case 4: break;
			case 5: break;
			case 0: System.out.println("프로그램을 종료합니다"); break;
			default: System.out.println("잘못 입력");
				
			}
		}while(user !=0 );
		
	}
	public void displayError(String disErr) {
		System.out.println("서비스 요청 실패  : " + disErr);
	}
	public void displaySuccesss(String disSuc) {
		System.out.println("서비스 요청 성공 : "+ disSuc);
	}
	
	// 메뉴1.전체 사원 정보 조회
	public void selectAll(ArrayList<pModelVo07> al) {
		for(int i=0; i<al.size(); i++) {
			System.out.println(al.get(i));
		}
		
	}
	
	
	
	
}

 

package MVC.controller;
import MVC.model.DAO.pModelDAO07;
import MVC.model.vo.pModelVo07;
import MVC.view.pView07;

import java.util.ArrayList;


public class pController07 {

//	controller : Model과 View를 연결해주는 다리역할
//	 넘겨받은 데이터를 가공시키는 역할
//	어떤 뷰에 출력할지를 결정	

	private pModelDAO07 pmDAO = new pModelDAO07();
	private pView07 pV07 = new pView07();
	
	 
	// 메뉴1.전체 사원 정보 조회
	public void selectAll() {
		ArrayList<pModelVo07> al = pmDAO.selectAll();
		if(al.isEmpty()) {
			System.out.println("조회 결과가 없습니다");
		}else {
			pV07.selectAll(al);
		}
			
	}
		
		
	
		
}

 

package MVC.model.DAO;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import MVC.model.vo.pModelVo07;

public class pModelDAO07 {

// DAO : Date Access Object
//		 데이터를 외부에 저장해놓을 수 있는 파일,db
//	 	 서로 왔다갔다 할 수 있는 공간으로 사용됨
//	 	외부 데이터 저장공간과 연결
//	 	DAO는 DB의 data에 접근하기 위한 객체로 직접 DB에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.

	
	
	// 메뉴1.전체 사원 정보 조회
	public ArrayList<pModelVo07> selectAll() {
		ArrayList<pModelVo07> al = null;
		Connection conn = null;
		Statement stmt = null;
		ResultSet rset = null;
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "SCOTT", "qrwe"); 
			String query1 = "SELECT * FROM EMP";
			stmt = conn.createStatement();
			rset = stmt.executeQuery(query1);
			
			al = new ArrayList<pModelVo07>();
			while(rset.next()) {
				
				int empNo = rset.getInt("EMPNO");
				String empName = rset.getString("ENAME");
				String job = rset.getString("JOB");
				int mgr = rset.getInt("MGR");
				Date hireDate = rset.getDate("HIREDATE");
				int sal = rset.getInt("SAL");
				int comm = rset.getInt("COMM");
				int deptNo = rset.getInt("DEPTNO");
				
				pModelVo07 pv07 = new pModelVo07(empNo, empName, job, mgr, hireDate, sal, comm, deptNo);
				
				al.add(pv07);
						
				System.out.println(al);
			}
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				rset.close();
				conn.close();
				rset.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}	
		}
		
		return al;
	}
	
	
	
}

 

package MVC.model.vo;
import java.sql.Date;

public class pModelVo07 {
//  VO : Vaule Object
//		 데이터를 잠시 담아두는 ‘임시 저장공간’
//    	 변수로써 사용
//	 	 Read-Only속성을 값 오브젝트
//   	  자바에서 단순히 값 타입을 표현하기 위해 불변 클래스(Read-Only)를 만들어 사용

	private int empNo; // 사번
	private String empName; // 이름
	private String job; // 직책
	private int mgr; // 직속 상사(manager)
	private Date hireDate; // java.sql.Date // 고용일
	private int sal; // 급여
	private int comm; // 커미션(인센티브)
	private int deptNo; // 부서번호

	
	public pModelVo07() {}
	public pModelVo07(String job, int sal, int comm) {
		this.job = job;
		this.sal = sal;
		this.comm = comm;
	}
	public pModelVo07(int empNo, String job, int sal, int comm) {
		this(job, sal, comm);
		this.empNo = empNo;
	}
	public pModelVo07(int empNo, String empName, String job, int mgr, int sal, int comm, int deptNo) {
		this(job,sal,comm);
		this.empNo = empNo;
		this.empName = empName;
		this.mgr = mgr;
		this.deptNo = deptNo;
	}
	public pModelVo07(int empNo, String empName, String job, int mgr, Date hireDate, int sal, int comm, int deptNo) {
		this(job,sal,comm);
		this.empNo = empNo;
		this.empName = empName;
		this.mgr = mgr;
		this.deptNo = deptNo;
		this.hireDate = hireDate;
	}
	
	public int getEmpNo() {
		return empNo;
	}
	public String getEmpName() {
		return empName;
	}
	public String getJob() {
		return job;
	}
	public int getMgr() {
		return mgr;
	}
	public Date getHireDate() {
		return hireDate;
	}
	public int getSal() {
		return sal;
	}	
	public int getComnn() {
		return comm;
	}
	public int getDeptNo() {
		return deptNo;
	}
	
	public void setEmpNo(int empNo) {
		this.empNo = empNo;
	}
	public void setEmpName(String empName) {
		this.empName = empName;
	}
	public void setMgr(int mgr) {
		this.mgr = mgr;
	}
	public void setHireDate(Date hireDate) {
		this.hireDate = hireDate;
	}
	public void setSal(int sal) {
		this.sal = sal;
	}
	public void setComm(int comm) {
		this.comm = comm;
	}
	public void setDeptNo(int deptNo) {
		this.deptNo = deptNo;
	}
	
	
	@Override
	public String toString() {
		return empNo+" / "+empName+" / "+job+" / "+mgr+" / "+hireDate+" / "+sal+" / "+comm+" / "+deptNo+" / ";
	}
	
}

 

728x90
반응형

+ Recent posts