OracleDB/OracleDB 국비지원 수업 정리

DAO, DTO, MAIN, SERVICE 분업하여 만들기 과제
깝몬 2023. 6. 8. 21:47

DTO

package mystudy1;

import java.util.Date;

public class EMPDTO {
	private int empno ;
	private String ename  ;              
	private String job    ;                   
	private int mgr ;
	private Date hiredate;
	private int sal ;       
	private int comm ;
	private int deptno ;
	 
	 public EMPDTO(int empno, String ename, String job, int mgr, Date hiredate, int sal, int comm, int deptno) {
		 this.empno = empno;
		 this.ename = ename;
		 this.job = job;
		 this.mgr = mgr;
		 this.hiredate = hiredate;
		 this.sal = sal;
		 this.comm = comm;
		 this.deptno = deptno;
	 }

	public int getEmpno() {
		return empno;
	}

	public String getEname() {
		return ename;
	}

	public String getJob() {
		return job;
	}

	public int getMgr() {
		return mgr;
	}

	public Date getHiredate() {
		return hiredate;
	}

	public int getSal() {
		return sal;
	}

	public int getComm() {
		return comm;
	}

	public int getDeptno() {
		return deptno;
	}

	public void setEmpno(int empno) {
		this.empno = empno;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public void setJob(String job) {
		this.job = job;
	}

	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;
	}
	 
	 
	 
	 
}

 

DAO

package mystudy1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.List;

import db.DeptDTO;


public class EMPDAO {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rst = null;
    PreparedStatement stmt2 = null;
    List<EMPDTO> empdto = null;
    
    //입력
    public void insertEMP(
    		Connection conn,
    		String ename, 
    		String job, 
    		int mgr, 
    		java.sql.Date hiredate, 
    		int sal, 
    		int comm, 
    		int deptno) throws SQLException {
    	String sql = "insert into emp(empno, ename, job, mgr, hiredate, sal, comm, deptno) "
    			+ "values(seq_dno,NEXTVAL,?,?,?,?,?,?,?)";
		stmt2 = conn.prepareStatement(sql);
		stmt2.setString(1, ename);
		stmt2.setString(2, job);
		stmt2.setInt(3, mgr);
		stmt2.setDate(4, hiredate);
		stmt2.setInt(5, sal);
		stmt2.setInt(6, comm);
		stmt2.setInt(7, deptno);
		int cnt = stmt2.executeUpdate();
		if(cnt==1) {System.out.println("입력 성공!");}
		else {System.out.println("입력된게 없음!");}
    }
    //수정
    public void updateEMP(
    		Connection conn,
    		int empno, 
    		String ename, 
    		String job, 
    		int mgr, 
    		java.sql.Date hiredate, 
    		int sal, 
    		int comm, 
    		int deptno) throws SQLException {
    	String sql = "UPDATE DMP "
    			+ "SET ENAME =?, JOB=?, MGR=?, HIREDATE=?, SAL=?, COMM=?, DEPTNO=? "
    			+ "WHERE EMPNO = ?";
    	stmt2 = conn.prepareStatement(sql);
		stmt2.setString(1, ename);
		stmt2.setString(2, job);
		stmt2.setInt(3, mgr);
		stmt2.setDate(4, hiredate);
		stmt2.setInt(5, sal);
		stmt2.setInt(6, comm);
		stmt2.setInt(7, deptno);
		stmt2.setInt(8, empno);
		int cnt = stmt2.executeUpdate();
		if(cnt==1) {System.out.println("수정 성공!");}
		else {System.out.println("수정된게 없음!");}
    }
    //삭제
    public void deleteEMPByEmpno(Connection conn, int empno) throws SQLException {
		String sql = "DELETE EMP "
				+ "WHERE EMPNO=?";
		stmt2 = conn.prepareStatement(sql);
		stmt2.setInt(1, empno);
		int cnt = stmt2.executeUpdate();
		if(cnt!=0) {System.out.println(cnt+"만큼 쿼리로 삭제!");}
		 else {System.out.println("쿼리가 아무것도 안했다!");}
	}
    //조회
    	//번호로 상세조회
    public EMPDTO getDetailEMPByEmpno(Connection conn, int empno) throws SQLException {
    	EMPDTO empdto = null;
    	String sql = "SELECT * "
    			+ "FROM EMP "
    			+ "WHERE EMPNO = ?";
    	stmt2 = conn.prepareStatement(sql);
    	stmt2.setInt(1, empno);
    	rst = stmt2.executeQuery();
		if(rst.next()==false) {System.out.println("정보를 불러오지 못함!");}
    	rst.next();
    	int empno1 = rst.getInt("EMPNO");
		String ename =rst.getString("ENAME");
		String job = rst.getString("JOB");
		int mgr = rst.getInt("MGR");
		java.sql.Date hiredate = rst.getDate("HIREDATE");
		int sal = rst.getInt("SAL");
		int comm = rst.getInt("COMM");
		int deptno = rst.getInt("DEPTNO");
		empdto = new EMPDTO(empno1, ename, job, mgr, hiredate, sal, comm, deptno);
    	return empdto;
    }
    	//목록조회
    public List<EMPDTO> getEveryEMP(Connection conn) throws SQLException{
    	List<EMPDTO> empdto= null;
    	String sql = "SELECT * "
    			+ "FROM EMP";
    	stmt = conn.createStatement();
    	rst = stmt.executeQuery(sql);
    	while(rst.next()) {
    		int empno1 = rst.getInt("EMPNO");
    		String ename =rst.getString("ENAME");
    		String job = rst.getString("JOB");
    		int mgr = rst.getInt("MGR");
    		java.sql.Date hiredate = rst.getDate("HIREDATE");
    		int sal = rst.getInt("SAL");
    		int comm = rst.getInt("COMM");
    		int deptno = rst.getInt("DEPTNO");
    		empdto.add(new EMPDTO(empno1, ename, job, mgr, hiredate, sal, comm, deptno));
    	}
    	return empdto;
    }
      	//직종조회
    public List<EMPDTO> getDetailEMPByJob(Connection conn, String job) throws SQLException {
    	List<EMPDTO> empdto = null;
    	String sql = "SELECT * "
    			+ "FROM EMP "
    			+ "WHERE EMPNO = ?";
    	stmt2 = conn.prepareStatement(sql);
    	stmt2.setString(1, job);
    	rst = stmt2.executeQuery();
		if(rst.next()==false) {System.out.println("정보를 불러오지 못함!");}
    	while(rst.next()) {
    	int empno1 = rst.getInt("EMPNO");
		String ename =rst.getString("ENAME");
		int mgr = rst.getInt("MGR");
		java.sql.Date hiredate = rst.getDate("HIREDATE");
		int sal = rst.getInt("SAL");
		int comm = rst.getInt("COMM");
		int deptno = rst.getInt("DEPTNO");
		empdto.add(new EMPDTO(empno1, ename, job, mgr, hiredate, sal, comm, deptno));
    	}
		return empdto;
    }
}

 

SERVICE

package mystudy1;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

public class EMPService {
	EMPDAO empdao = new EMPDAO();
	Statement stmt = null;
    ResultSet rst = null;
    PreparedStatement stmt2 = null;
    EMPJDBCUtil obj = new EMPJDBCUtil();
     
	public void insertEMP(String ename, String job,int mgr,Date hiredate, int sal, int comm, int deptno) throws ClassNotFoundException, SQLException {
		Connection conn = obj.getDBConn();
		empdao.insertEMP(conn, ename, job, mgr, hiredate, sal, comm, deptno);
	}
	public void updateEMP(int empno, String ename, String job, int mgr, Date hiredate, int sal, int comm, int deptno) throws ClassNotFoundException, SQLException {
		Connection conn = obj.getDBConn();
		empdao.updateEMP(conn, empno, ename, job, mgr, hiredate, sal, comm, deptno);
	}
	public void deleteEMPByEmpno(int empno) throws ClassNotFoundException, SQLException {
		Connection conn = obj.getDBConn();
		empdao.deleteEMPByEmpno(conn, empno);
	}
	public EMPDTO getDetailEMPByEmpno(int empno) throws ClassNotFoundException, SQLException {
		Connection conn = obj.getDBConn();
		EMPDTO empdto = empdao.getDetailEMPByEmpno(conn, empno);
		return empdto;
	}
	public List<EMPDTO> getEveryEMP() throws ClassNotFoundException, SQLException{
		Connection conn = obj.getDBConn();
		List<EMPDTO> empdto = empdao.getEveryEMP(conn);
		return empdto;
	}
	public List<EMPDTO> getDetailEMPByJob(String job) throws ClassNotFoundException, SQLException {
		Connection conn = obj.getDBConn();
		List<EMPDTO> empdto = empdao.getDetailEMPByJob(conn, job);
		return empdto;
	}
}

 

 

MAIN

package mystudy1;

import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class EMPMain {
	//생성자
	public static void main(String[] args) throws ClassNotFoundException, SQLException, ParseException {
		//필드
		Scanner scan = new Scanner(System.in);
		int menuNum = 0;
		boolean nowrun = true;
		EMPService empservice = new EMPService();
		SimpleDateFormat Formatter = new SimpleDateFormat("yyyy-mm-dd");
		//구현부
		System.out.println("===============중앙 EMP 확인메뉴===============");
		System.out.println("1.신규사원 입력");
		System.out.println("2.정보 수정");
		System.out.println("3.정보 삭제");
		System.out.println("4.사원번호로 조회");
		System.out.println("5.전체 불러오기");
		System.out.println("6.직종으로 불러오기");
		System.out.println("0.프로그램 종료");
		System.out.println("실행하실 메뉴번호를 입력하세요 > ");
		menuNum = scan.nextInt();
		while(nowrun) {
		switch(menuNum) {
		case 1://신규사원 입력
				System.out.println("사원명을 입력하세요 > ");
				scan.hasNextLine();
				String ename = scan.nextLine();
				System.out.println("직종을 입력하세요 > ");
				String job = scan.nextLine();
				System.out.println("mgr을 입력하세요 > ");
				int mgr = scan.nextInt();
				System.out.println("고용일을 입력하세요 YYYY-MM-DD를 지킬것> ");
				scan.nextLine();
				java.sql.Date hiredate = (java.sql.Date) Formatter.parse(scan.nextLine());
				System.out.println("연봉을 입력하세요 > ");
				int sal = scan.nextInt();
				System.out.println("부수입을 입력하세요 > ");
				scan.nextLine();
				int comm = scan.nextInt();
				System.out.println("부서번호를 입력하세요 > ");
				scan.nextLine();
				int deptno = scan.nextInt();
				empservice.insertEMP(ename, job, mgr, hiredate, sal, comm, deptno);
			break;
		case 2://정보수정
			System.out.println("수정할 사원번호를 입력하세요 >");
			scan.nextLine();
			int empno1 = scan.nextInt();
			System.out.println("사원명을 입력하세요 > ");
			scan.hasNextLine();
			String ename1 = scan.nextLine();
			System.out.println("직종을 입력하세요 > ");
			String job1 = scan.nextLine();
			System.out.println("mgr을 입력하세요 > ");
			int mgr1 = scan.nextInt();
			System.out.println("고용일을 입력하세요 YYYY-MM-DD를 지킬것> ");
			scan.nextLine();
			java.sql.Date hiredate1 = (java.sql.Date) Formatter.parse(scan.nextLine());
			System.out.println("연봉을 입력하세요 > ");
			int sal1 = scan.nextInt();
			System.out.println("부수입을 입력하세요 > ");
			scan.nextLine();
			int comm1 = scan.nextInt();
			System.out.println("부서번호를 입력하세요 > ");
			scan.nextLine();
			int deptno1 = scan.nextInt();
			empservice.updateEMP(empno1, ename1, job1, mgr1, hiredate1, sal1, comm1, deptno1);
			break;
		case 3://정보삭제
			System.out.println("수정할 사원번호를 입력하세요 > ");
			scan.nextLine();
			int empno2 = scan.nextInt();
			empservice.deleteEMPByEmpno(empno2);
			break;
		case 4://사원번호로 조회
			System.out.println("조회할 사원번호를 입력하세요 > ");
			scan.nextLine();
			int empno3 = scan.nextInt();
			empservice.getDetailEMPByEmpno(empno3);
			break;
		case 5://전체 불러오기
			System.out.println("모든 사원목록을 출력합니다.");
			List<EMPDTO> empdto = empservice.getEveryEMP();
			for(EMPDTO a: empdto) {
				int empno5 = a.getEmpno();
				String ename5 = a.getEname();
				String job5 = a.getJob();
				int mgr5 = a.getMgr();
				Date hiredate5 = a.getHiredate();
				int sal5 = a.getSal();
				int comm5 = a.getComm();
				int deptno5 = a.getDeptno();
				System.out.println("사원번호 : "+empno5+" 직원명 : "+ename5+" 직종명 : "+job5+" mgr명 : "+ mgr5+" 고용일 : "+ hiredate5 + " 연봉 : " + sal5 +  "부수입 : " +comm5+ " 부서번호 : "+ deptno5 );
			}
			break;
		case 6://직종으로 불러오기
			System.out.println("조회할 직종을 입력해주세요  > ");
			scan.nextLine();
			String job6 = scan.nextLine();
			List<EMPDTO> empdto2 = empservice.getDetailEMPByJob(job6);
			for(EMPDTO a: empdto2) {
				int empno5 = a.getEmpno();
				String ename5 = a.getEname();
				String job5 = a.getJob();
				int mgr5 = a.getMgr();
				Date hiredate5 = a.getHiredate();
				int sal5 = a.getSal();
				int comm5 = a.getComm();
				int deptno5 = a.getDeptno();
				System.out.println("사원번호 : "+empno5+" 직원명 : "+ename5+" 직종명 : "+job5+" mgr명 : "+ mgr5+" 고용일 : "+ hiredate5 + " 연봉 : " + sal5 +  "부수입 : " +comm5+ " 부서번호 : "+ deptno5 );
			}
			break;
		case 0://프로그램종료
			System.out.println("프로그램을 종료합니다.");
			nowrun = false;
			break;
		default:
			break;
		}//switch문 끝
	}//while문끝

}//main 끝
	
}//Class끝

 

 

전체적으로 입력을 받은것을 통하여 정보를 가져올 수 있도록 구현했다. Scanner클래스가 들어가면 조금 더 복잡해지지만, 사용성이 높아지는 것 같아서 프로그래밍이라는 느낌이 조금이라도 든다.