1). View에서 사용자가 보게될 화면(메뉴판, 도서메뉴 등)
2). Controller를 호출과 전달값 전달
3). Controller에서 사용자가 요청한 내용 처리 후, 가공할 데이터가 있다면 처리 후 Dao로 전달
4). Dao로 호출과 전달값 전달
5). Dao에서 DB접속, SQL구문 실행, SELECT | DML 결과 받고 Controller로 결과 리턴
6). Controller로 전달받은 결과에 따라 view 결정(성공 및 실패화면)
7). 값 입력 및 출력
파일 구성 확인 !
Model --> MemberDao
View --> MemberMenu
Controller --> MemberController
vo --> Member
package com.br.model.vo;
import java.sql.Date;
public class Member {
private int userNo;
private String userId;
private String userPwd;
private String userName;
private String gender;
private int age;
private String email;
private String phone;
private String address;
private String hobby;
private Date enrollDate;
public Member() {}
public Member(String userId, String userPwd, String userName, String gender, int age, String email, String phone,
String address, String hobby) {
super();
this.userId = userId;
this.userPwd = userPwd;
this.userName = userName;
this.gender = gender;
this.age = age;
this.email = email;
this.phone = phone;
this.address = address;
this.hobby = hobby;
}
public int getUserNo() {
return userNo;
}
public void setUserNo(int userNo) {
this.userNo = userNo;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public Date getEnrollDate() {
return enrollDate;
}
public void setEnrollDate(Date enrollDate) {
this.enrollDate = enrollDate;
}
@Override
public String toString() {
return "Member [userNo=" + userNo + ", userId=" + userId + ", userPwd=" + userPwd + ", userName=" + userName
+ ", gender=" + gender + ", age=" + age + ", email=" + email + ", phone=" + phone + ", address="
+ address + ", hobby=" + hobby + ", enrollDate=" + enrollDate + "]";
}
}
public class MemberMenu {
// 전역변수로 스캐너와 controller 매개변수 생성해주기
private Scanner sc = new Scanner(System.in);
private MemberController mc = new MemberController();
public void mainMenu() {
while(true) {
System.out.println("\n === 회원관리 프로그램 === ");
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.print(">> 메뉴 선택 : ");
int menu = sc.nextInt();
sc.nextLine();
switch(menu) {
case 1 : inputMember(); break;
case 2 : mc.selectList(); break;
case 3 : String userId = inputMemberId();
mc.selectByUserId(userId);
break;
case 4 : break;
case 5 : break;
case 6 : break;
case 0 : System.out.println("\n이용해주셔서 감사합니다. 프로그램을 종료합니다."); return;
default : System.out.println("\n메뉴를 잘못입력했습니다. 다시 입력해주세요");
}
}
}
public void inputMember() {
System.out.println("\n ==== 회원추가 ==== ");
// 아이디 ~ 취미 입력받기
System.out.print("아이디 : ");
String userId = sc.nextLine();
System.out.print("비밀번호 : ");
String userPwd = sc.nextLine();
System.out.print("이름 : ");
String userName = sc.nextLine();
System.out.print("성별(M/F) : ");
String gender = sc.nextLine().toUpperCase(); // 무조건 대문자로 반환
System.out.print("나이 : ");
String age = sc.nextLine();
System.out.print("이메일 : ");
String email = sc.nextLine();
System.out.print("전화번호(-빼고 입력) : ");
String phone = sc.nextLine();
System.out.print("주소 : ");
String address = sc.nextLine();
System.out.print("취미(,로 연이어서 작성 가능) : ");
String hobby = sc.nextLine();
// 회원 추가 요청 == Controller 메소드 호출
mc.insertMember(userId, userPwd, userName, gender, age, email, phone, address, hobby);
}
public class MemberController {
*/
public void insertMember(String userId, String userPwd, String userName,String gender, String age, String email,String phone, String address, String hobby) {
// 전달값을 Member객체에 담아서 통째로 Dao로 전달
// 방법 : 매개변수 생성자로 생성과 동시에 초기화 하기
// 근데 처음에 age 자료형을 String으로 받았기 때문에 파싱해야함
// Interger.parseInt(age)
// 파싱까지해도 오류남 why ? 처음에 생성한 클래스에는 총 11개의 변수가 있는데 현재 입력한 변수는 9개임
// 해결방안 : Member 클래스에 가서 우리가 조회하고자 하는 것만 선택하여 매개변수생성자 추가로 생성하기 ! (쉬프트+알트+s + o)
Member m = new Member(userId, userPwd, userName, gender, Integer.parseInt(age), email, phone, address, hobby);
// Dao로 호출하면서 전달값 result변수에 담기
int result = new MemberDao().insertMember(m);
// 성공인지 실패인지 판단 -> Ddo에서 값 전달받은 후 작성 --> view단에서 출력
if(result > 0) {
new MemberMenu().displaySuccess("성공적으로 회원이 추가됐습니다.");
}else {
new MemberMenu().displayFail("회원 추가를 실패했습니다.");
}
}
public class MemberDao {
public int insertMember(Member m) {
//필요한 변수 셋팅
int result = 0;
Connection conn = null;
Statement stmt = null;
//실행할 sql문
String sql = "INSERT INTO MEMBER VALUES(SEQ_USETR_NO.NEXTVAL, "
+ "'" + m.getUserId() + "', "
+ "'" + m.getUserPwd() + "', "
+ "'" + m.getUserName() + "', "
+ "'" + m.getGender() + "', "
+ m.getAge() + ", "
+ "'" + m.getEmail() + "', "
+ "'" + m.getPhone() + "', "
+ "'" + m.getAddress() + "', "
+ "'" + m.getHobby() + "', SYSDATE)";
try {
// 1) jdbc driver 등록
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2) Connection 생성
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "JDBC", "JDBC");
// 3) Statement 생성
stmt = conn.createStatement();
// 4 ~ 5) sql문 실행 후 결과 받기
result = stmt.executeUpdate(sql);
// 6) 트랜잭션 처리
if(result > 0) {
conn.commit();
}else {
conn.rollback();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 7. 다쓴 자원 반납
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result; // 성공시 1 , 실패시 0 반환
}
// 서비스 요청 성공 시 출력화면
public void displaySuccess(String message) {
System.out.println("\n서비스 요청 성공 : " + message);
}
// 서비스 요청 실패 시 출력화면
public void displayFail(String message) {
System.out.println("\n서비스 요청 실패 : " + message);
}