현재 진행 중인 개인 프로젝트에
직원 정보를 삭제하는 기능을 추가했다
System.out.println("4. 직원 정보 삭제하기");
switch문을 사용하여
사용자가 숫자 4를 입력하면
deleteEmp(); 메소드로
이동하게끔 만들었다
case 4:
deleteEmp();
break;
public void deleteEmp(){
System.out.println("정말 삭제하겠습니까? (y/n)");
String yn = sc.nextLine().toUpperCase();
if (!(yn.equals("Y"))) {
System.out.println("직원 목록 메뉴로 돌아갑니다. ");
empListMenu();
}else {
System.out.println("삭제할 사원 번호 : ");
try {
int empNum = sc.nextInt();
nc.deleteEmp(empNum);
}catch (InputMismatchException e){
System.out.println("삭제할 사원의 사번을 입력하셔야 됩니다. " + e.getMessage());
sc.nextLine();
}
}
}
직원 삭제는 사번을 통해서 삭제가 되므로
int형 입력을 주게 만들었다.
해고여부를 통해서 그만둔 직원도 여부를 남기기 위해서
직원 정보 삭제는 조금 민감감 사항 같으므로
다시 한 번 물어보고 삭제가 되게 만들었다.
사용자가 Y를 누를 시
nc.deleteEmp(empNum);
컨트롤러 부분에 사용자에게 입력받은 정수형 데이터를 넘기게 만들었다
public void deleteEmp(int empNo){
int result = new EmployeeService().deleteEmp(empNo);
if(result > 0 ){
new EmployeeMenu().CheckSuccess("직원 정보 삭제가 완료 되었습니다");
}else {
new EmployeeMenu().CheckSuccess("직원 정보 삭제가 실패 했습니다.");
}
}
메소드가 실행에 정상적으로 성공을 한다면 1을 반환
1이 반환 된다면 정보 삭제가 완료 되었다는
String 문자를 반환
삭제가 실패한다면 0을 반환되므로
직원 정보 삭제 실패 메세지를 반환하게 만들었다
int result = new EmployeeService().deleteEmp(empNo);
Service 클래스의 deleteEmp 메소드에 다시 전달 받은 매개변수를 넘겨준다
public int deleteEmp(int empNo){
Connection conn = JDBCTemplate.getConnection();
int result = new EmployeeDao().deleteEmp(conn, empNo);
if(result > 0){
JDBCTemplate.commit(conn);
}else {
JDBCTemplate.rollback(conn);
}
JDBCTemplate.close(conn);
return result;
}
Service 클래스의 deleteEmp메소드
전달 받은 매개변수를 다시 DAO에 넘겨주고
실행에 성공하면 commit을
실패한다면 rollback을 해준다
DAO 클래스 : deleteEmp
public int deleteEmp(Connection conn , int empId){
int result = 0;
PreparedStatement pstmt = null;
String sql = prop.getProperty("deleteEmp");
try{
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, empId);
result = pstmt.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}finally {
JDBCTemplate.close(pstmt);
}
return result;
}
PreparedStatement : SQL 쿼리를 안전하게 실행을 시켜 주는 인터페이스이다
사용하면 SQL 쿼리를 미리 컴파일하여 SQL 인젝션 공격을 방지할 수 있다
conn은 데이터베이스에 연결된 Connection 객체이다
executeUpdate() :
INSERT, UPDATE, DELETE와 같은 쿼리의 경우
executeUpdate() 메소드를 통해서 업데이트를 해줘야 된다.