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
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Java-SQL][JDBC] Statement & prepareStatement 차이 (0) | 2022.03.31 |
---|---|
[1일1코딩][Java-SQL][JDBC] JDBC 연결 (0) | 2022.03.30 |
[1일1코딩] [SQL][ORACLE] PL/SQL - 조건문,반복문,예외처리 (0) | 2022.03.26 |
[1일1코딩] [Java] @Override toString() + setter/getter (0) | 2022.03.25 |
[1일1코딩] [Java] FileWriter/FileReader 클래스 - write,append,close (0) | 2022.03.24 |