3_1. View) 회원 아이디로 검색 -> 회원 아이디 입력받을 메소드 생성 후 Controller로 전달 

public String inputMemberId() {
 	System.out.print("\n회원 아이디 입력 : ");
	return sc.nextLine();

3_2  Controller)  Dao에  입력받은 값 전달 -> Dao에서 전달받은 객체를 통해 검색결과 성공유무 도출

public void selectByUserId(String userId) {
		Member m = new MemberDao().selectByUserId(userId);
		
		if(m == null) { // 검색결과가 없을경우 
			new MemberMenu().displayNoData(userId +"에 검색결과가 없습니다.");
		}else { // 검색결과가 있을 경우 
			new MemberMenu().displayMember(m);
		}
	}

3_3. Dao)  JDBC과정을 통해 얻은 결과를 객체에 담아 Controller로 전달 

public Member selectByUserId(String userId) {
		//select문 (한행 조회) => ResultSet객체 => Member객체에 담기 
	Member m = null;
		
	Connection conn = null;
	Statement stmt = null;
	ResultSet rset = null;
		
	String sql = "SELECT * FROM MEMBER WHERE USER_ID = '" + userId + "'";
		
	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
		stmt = conn.createStatement();
			
		rset = stmt.executeQuery(sql);
			
		if(rset.next()) {// 조회 됐다면 해당 조회된 한행의 모든 컬럼값들을 뽑아서 Member객체에 담기
			m = new Member(rset.getInt("user_no"),
				   rset.getString("user_id"),
				   rset.getString("user_pwd"),
				   rset.getString("user_name"),
				   rset.getString("gender"),
				   rset.getInt("age"),
				   rset.getString("email"),
				   rset.getString("phone"),
				   rset.getString("address"),
				   rset.getString("hobby"),
				   rset.getDate("enroll_date"));
		}else {
				
		}
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				rset.close();
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return m; // 조회결과가 없을 경우 null  | 조회결과가 있을 경우 생성된 Member객체 
	}

3_4 . View)  조회 서비스 요청 결과를 보여주는 응답화면 
                  객체 값이 null 일경우 데이터없음
                  객체에 값이 있을 경우 출력문을 통해 객체 출력 

public void displayNoData(String message) {
		System.out.println("\n" + message);
	}
public void displayMember(Member m) {
		System.out.println("\n조회된 데이터는 다음과 같습니다.\n");
		System.out.println(m);
	}

 

 

4_1. View) 회원 이름으로 검색 하는 메뉴 : 회원 이름입력받을 메소드 생성후  그 값을 Controller에 전달

public String inputMemberName() {
		System.out.print("\n회원 이름(키워드) 입력 : ");
		return sc.nextLine();
	}

4_2. Controller )  전달받은 키워드를 Dao에 전달후 그 결과를 ArrayList에 반환 

	public void selectByUserName(String keyword) {
		ArrayList<Member> list = new MemberDao().selectByUserName(keyword);
		
		if(list.isEmpty()) { // 조회결과 없을경우 
			 new MemberMenu().displayNoData(keyword +"에 해당하는 검색결과가 없습니다.");
		}else { // 검색결과 있을경우 
			 new MemberMenu().displayMemberList(list);
		}
	}

4_3 Dao ) JDBC과정을 통해 얻은 결과를 객체에 담은후 ArrayList 에 옮겨 담아 Controller에 전달 

public ArrayList<Member> selectByUserName(String keyword) {
	//select문 (여러행) => ResultSet 객체에결과 받기 = > ArrayList<Member>에 객체 담기  
		
	ArrayList<Member> list = new ArrayList<>();// 텅빈 리스트 
		
	Connection conn = null;
	Statement stmt = null;
	ResultSet rset = null;
		
	//SELECT * FROM MEMBER WHERE USER_NAME LIKE '%KEYWORD%'
	String sql = "SELECT * FROM MEMBER WHERE USER_NAME LIKE '%"+ keyword + "%'";
		
	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
		stmt = conn.createStatement();
		rset = stmt.executeQuery(sql);
	    while(rset.next()) {
		      list.add(new Member(rset.getInt("user_no"),
						       rset.getString("user_id"),
						       rset.getString("user_pwd"),
						       rset.getString("user_name"),
						       rset.getString("gender"),
						       rset.getInt("age"),
						       rset.getString("email"),
						       rset.getString("phone"),
						       rset.getString("address"),
						       rset.getString("hobby"),
						       rset.getDate("enroll_date")));
		    }
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				rset.close();
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return list; // 조회결과 없다면 텅빈리스트 | 조회결과 있다면 결과가 담긴 리스트 
	}

4_4. View)  list 비어있을 경우  displayNoData()메소드 호출 / 조회 결과 있을 경우 displayMemberList()메소드 호출 

public void displayNoData(String message) {
		System.out.println("\n" + message);
	}
public void displayMemberList(ArrayList<Member> list) {
		System.out.println("\n조회된 데이터는 다음과 같습니다.");
		for(int i =0; i<list.size();i++) {
			System.out.println(list.get(i));
		}

 

5_1. View ) 회원 정보 변경 메뉴 : 회원아이디와 수정하고자할 정보들을 입력받은후 그 값을 Controller에 전달

public void updateMember() {
		System.out.println("\n=== 회원 정보 변경 ===");
		String userId = inputMemberId();
		
		System.out.print("변경할 비밀번호: ");
		String userPwd = sc.nextLine();
		System.out.print("변경할 이메일 : ");
		String email = sc.nextLine();
		System.out.print("변경할 전화번호 : ");
		String phone = sc.nextLine();
		System.out.print("변경할 주소 : ");
		String address = sc.nextLine();
		
		mc.updateMember(userId,userPwd,email,phone,address);
	}

5_2. Controller) 전달받은 값들을 객체에 옮겨담아 Dao로 전달 후 결과값을 돌려받음 

public void updateMember(String userId, String userPwd, String email,
			                 String phone, String address) {
		Member m = new Member();
		m.setUserId(userId);
		m.setUserPwd(userPwd);
		m.setEmail(email);
		m.setPhone(phone);
		m.setAddress(address);
		
		int result = new MemberDao().updateMember(m);
		if(result >0) {
			new MemberMenu().displaySuccess("성공적으로 정보변경되었습니다.");
		}else {
			new MemberMenu().displayFail("회원 정보 변경 실패");
		}
	}

5_3. Dao)  JDBC과정을 통해 처리된 행수의 결과값을  Controller로 전달

public int updateMember(Member m) {
	//update문 ->처리된 행수(int) 결과값 -> 트랜잭션 처리  
	int result = 0;
	Connection conn = null;
	Statement stmt = null;
		
	//실행할 sql문 (완성형태)
	String sql = "UPDATE MEMBER "
			   +   "SET USER_PWD = '"+ m.getUserPwd() + "', "
			   +          "EMAIL = '"+ m.getEmail() + "', "
			   +          "PHONE =  '"+ m.getPhone() + "', "
			   +        "ADDRESS = '" + m.getAddress() + "' "
			   +  "WHERE USER_ID = '" + m.getUserId() +"'";
	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
		stmt = conn.createStatement();
		result = stmt.executeUpdate(sql);
			
		if(result>0) {
			conn.commit();
		}else {
			conn.rollback();
		}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;
	}

5_4 View)  결과값이 0 (조회된 결과가 없을시 ) Fail / 결과값이 1이상일때 (조회된 결과가 있을때)  Success 메소드 호출

 

6_1. View) 회원 탈퇴 메뉴 : 탈퇴하고자하는 회원 아이디 입력 받는 메소드 호출 후 그 값을 Controller에 전달 

6_2. Controller )  전달받은 회원아이디를 Dao에 전달한 후 결과값(int)로 돌려받음 

public void deleteMember(String userId) {
		int result = new MemberDao().deleteMember(userId);
		
		if(result>0) {
			new MemberMenu().displaySuccess("성공적으로 회원 탈퇴되었습니다");
		}else {
			new MemberMenu().displayFail("회원 탈퇴 실패");
		}
	}

6_3. Dao)  JDBC과정을 통해 처리된 행수를 (int)값으로 돌려받고, 그값을 Controller에 전달 

public int deleteMember(String userId) {
	//delet문 => 처리된 행수 (결과 int) => 트랜잭션 처리  
		
	int result = 0;
	Connection conn= null;
	Statement stmt = null;
		
	String sql = "DELETE FROM MEMBER WHERE USER_ID = '"+ userId +"'";
		
	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
		stmt = conn.createStatement();
		result = stmt.executeUpdate(sql);
			
		if(result>0) {
			conn.commit();
		}else {
			conn.rollback();
		}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;
	}

6_4. View)  결과값이 0 (조회된 결과가 없을시 ) Fail / 결과값이 1이상일때 (조회된 결과가 있을때)  Success 메소드 호출

복사했습니다!