관리 메뉴

거니의 velog

230918_MVC 1 본문

대덕인재개발원_자바기반 애플리케이션

230918_MVC 1

Unlimited00 2023. 9. 15. 17:02

MVC (Model, View, Controller) 패턴

  • MVC패턴의 비지니스 로직을 처리하는 클래스

    1) VO, DTO ==> 데이터를 저장하는 역할만 하는 클래스
                        (VO => Value Object, DTO : Data Transfer Object)
                        ==> 보통 DB 테이블에서 1개의 레코드를 저장할 클래스를 말한다.

    2) DAO ==> 실제 DB서버와 연결해서 SQL문을 실행해서 그 결과를 작성하여
                         Service에게 전달하는 역할
    을 수행하는 클래스를 말한다.
                         이 클래스의 메서드 하나가 DB와 관련된 작업 1개를 수행하도록 작성한다.
                         (DAO => Data Access Object)

    3) Service ==> 일을 수행하는 중간 관리자 같은 역할을 수행하는 클래스를 말한다.
                              DAO에 작성된 메서드를 원하는 작업에 맞게 호출하여 그 결과를 받아오고
                              받아온 자료를 Controller에게 보내주는 역할을 수행한다.

    4) Controller ==> 비즈니스 로직이 시작되는 곳으로 사용자의 요청이 오면
                                  그 요청에 맞는 Service에게 일을 시키고, Service가 보내온 처리 결과를 
                                  View에 보내서 화면에 반영되도록하는 역할을 수행한다.


  • Controller --> Service --> DAO -->DB서버
    Controller <-- Service <-- DAO <--DB서버

    각 제어 흐름 중에 사용되는 데이터는 보통 VO객체이거나 Collection객체에 담아서 보낸다.

dao와 service에 interface를 만든 이유 :
표준을 만들기 위해서 , 시스템 환경에 맞추기 위해서 (이리 저리 작동되어야 하기 때문에 만듦)



1. DTO를 먼저 만든다. 데이터를 주고 받기 위함. 우리는 주로 VO라는 용어로 쓸 것.

2. Controller는 Service에 있는 메서드를 호출해야 하므로 Service 메서드가 선재해야 한다. DAO도 마찬가지. 
    DAO => Service => Controller 순으로 만드는 것이 좋다.

3. 인터페이스만 만들어서 배포하는 경우는 Controller부터 시작할 수도 있지만, 대체적으로 인터페이스를 같이 만드는 경우가 많아 DAO부터 만들어서 Service, Controller 순으로 만드는 것이 일반적이다.


[세팅]


[MemberVO.java]

package kr.or.ddit.vo;

// table name : mymember
// MEM_ID	VARCHAR2(20 BYTE)
// MEM_PASS	VARCHAR2(50 BYTE)
// MEM_NAME	VARCHAR2(30 BYTE)
// MEM_TEL	VARCHAR2(14 BYTE)
// MEM_ADDR	VARCHAR2(90 BYTE)

/*
 * DB 테이블에 있는 컬럼을 기준으로 데이터를 객체화 할 클래스
 * 
 * DB 테이블의 '컬럼명'과 이름이 같은 '멤버변수'를 작성한다.
 * 
 * DB 테이블의 컬럼과 클래스의 맴버변수를 매핑하는 역할을 수행한다.
 */
public class MemberVO {

	private String mem_id;
	private String mem_pass;
	private String mem_name;
	private String mem_tel;
	private String mem_addr;
	
	// VO 클래스에서 별도의 생성자를 만들 때에는
	// 기본 생성자도 반드시 같이 만들어 준다.
	public MemberVO() {}
	public MemberVO(String mem_id, String mem_pass, String mem_name, String mem_tel, String mem_addr) {
		this.mem_id = mem_id;
		this.mem_pass = mem_pass;
		this.mem_name = mem_name;
		this.mem_tel = mem_tel;
		this.mem_addr = mem_addr;
	}
	
	// getter, setter
	public String getMem_id() {
		return mem_id;
	}
	
	public void setMem_id(String mem_id) {
		this.mem_id = mem_id;
	}
	
	public String getMem_pass() {
		return mem_pass;
	}
	
	public void setMem_pass(String mem_pass) {
		this.mem_pass = mem_pass;
	}
	
	public String getMem_name() {
		return mem_name;
	}
	
	public void setMem_name(String mem_name) {
		this.mem_name = mem_name;
	}
	
	public String getMem_tel() {
		return mem_tel;
	}
	
	public void setMem_tel(String mem_tel) {
		this.mem_tel = mem_tel;
	}
	
	public String getMem_addr() {
		return mem_addr;
	}
	
	public void setMem_addr(String mem_addr) {
		this.mem_addr = mem_addr;
	}
	
	@Override
	public String toString() {
		return "MemberVO [mem_id=" + mem_id + ", mem_pass=" + mem_pass + ", mem_name=" + mem_name + ", mem_tel="
				+ mem_tel + ", mem_addr=" + mem_addr + "]";
	}
	
}

[IMemberDao.java]

package kr.or.ddit.member.dao;

import java.util.List;
import java.util.Map;

import kr.or.ddit.vo.MemberVO;

/**
 * 실제 DB와 연결해서 SQL문을 수행하여 그 결과를 작성해서 
 * Service에게 전달하는 DAO의 interface
 * 
 * 메서드 하나가 DB와 관련된 작업 1개를 수행하도록 작성한다.
 * 
 * @author PC_09
 *
 */
public interface IMemberDao {

	/**
	 * MemberVO에 담겨진 자료를 DB에 insert하는 메서드
	 * 
	 * @param memVo DB에 insert할 자료가 저장될 MemberVO객체
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int insertMember(MemberVO memVo);
	
	/**
	 * 회원ID를 매개변수로 받아서 해당 회원 정보를 삭제하는 메서드
	 * 
	 * @param memId 삭제할 회원ID
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int deleteMember(String memId);
	
	/**
	 * MemberVO자료를 이용하여 DB에 update하는 메서드
	 * 
	 * @param memVo update할 회원 정보가 저장된 MemberVO객체
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int updateMember(MemberVO memVo);
	
	/**
	 * DB에 저장된 전체 회원 정보를 가져와서 List에 담아서 반환하는 메서드
	 * 
	 * @return MemberVO객체가 저장된 List
	 */
	public List<MemberVO> getAllMember();
	
	/**
	 * 회원ID를 매개변수로 받아서 해당 회원ID의 개수를 반환하는 메서드
	 * 
	 * @param memId 검색할 회원ID
	 * @return 검색된 회원ID의 개수
	 */
	public int getMemIdCount(String memId);
	
	/**
	 * Map의 정보를 이용하여 회원 정보 중 원하는 컬럼을 수정하는 메서드
	 * 	 key값 정보 ==> 회원ID(memid), 수정할컬럼명(field), 수정할데이터(data)
	 * 
	 * @param paramMap 회원ID, 수정할컬럼명, 수정할데이터가 저장된 Map객체
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int updateMember2(Map<String, String> paramMap);
	
}

[IMemberService.java]

package kr.or.ddit.member.service;

import java.util.List;
import java.util.Map;

import kr.or.ddit.vo.MemberVO;

/**
 * Service객체는 DAO에 만들어진 메서드를 원하는 작업에 맞게 호출하여
 * 그 결과를 받아오고, 받아온 결과를 Controller에게 보내주는 역할을 한다.
 * 
 * (자바 고급시간에서는 보통 DAO의 구조와 같게 만든다.)
 * 
 * @author PC_09
 *
 */
public interface IMemberService {

	/**
	 * MemberVO에 담겨진 자료를 DB에 insert하는 메서드
	 * 
	 * @param memVo DB에 insert할 자료가 저장될 MemberVO객체
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int insertMember(MemberVO memVo);
	
	/**
	 * 회원ID를 매개변수로 받아서 해당 회원 정보를 삭제하는 메서드
	 * 
	 * @param memId 삭제할 회원ID
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int deleteMember(String memId);
	
	/**
	 * MemberVO자료를 이용하여 DB에 update하는 메서드
	 * 
	 * @param memVo update할 회원 정보가 저장된 MemberVO객체
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int updateMember(MemberVO memVo);
	
	/**
	 * DB에 저장된 전체 회원 정보를 가져와서 List에 담아서 반환하는 메서드
	 * 
	 * @return MemberVO객체가 저장된 List
	 */
	public List<MemberVO> getAllMember();
	
	/**
	 * 회원ID를 매개변수로 받아서 해당 회원ID의 개수를 반환하는 메서드
	 * 
	 * @param memId 검색할 회원ID
	 * @return 검색된 회원ID의 개수
	 */
	public int getMemIdCount(String memId);
	
	/**
	 * Map의 정보를 이용하여 회원 정보 중 원하는 컬럼을 수정하는 메서드
	 * 	 key값 정보 ==> 회원ID(memid), 수정할컬럼명(field), 수정할데이터(data)
	 * 
	 * @param paramMap 회원ID, 수정할컬럼명, 수정할데이터가 저장된 Map객체
	 * @return 작업성공 : 1, 작업실패 : 0
	 */
	public int updateMember2(Map<String, String> paramMap);
	
}

[MemberDaoImpl.java]

package kr.or.ddit.member.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import kr.or.ddit.util.DBUtil3;
import kr.or.ddit.vo.MemberVO;

public class MemberDaoImpl implements IMemberDao {

	@Override
	public int insertMember(MemberVO memVo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0; // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			String sql = " insert into mymember (mem_id, mem_pass, mem_name, mem_tel, mem_addr) ";
			sql += " values(?, ?, ?, ?, ?) ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memVo.getMem_id());
			pstmt.setString(2, memVo.getMem_pass());
			pstmt.setString(3, memVo.getMem_name());
			pstmt.setString(4, memVo.getMem_tel());
			pstmt.setString(5, memVo.getMem_addr());
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}
		
		return cnt;
	}

	@Override
	public int deleteMember(String memId) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0; // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			String sql = " delete from mymember where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memId);
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}
		
		return cnt;
	}

	@Override
	public int updateMember(MemberVO memVo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0; // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			String sql = " update mymember set "
					+ " mem_pass = ?, mem_name = ?, mem_tel = ?, mem_addr = ? "
					+ " where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memVo.getMem_pass());
			pstmt.setString(2, memVo.getMem_name());
			pstmt.setString(3, memVo.getMem_tel());
			pstmt.setString(4, memVo.getMem_addr());
			pstmt.setString(5, memVo.getMem_id());
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}
		
		return cnt;
	}

	@Override
	public List<MemberVO> getAllMember() {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		List<MemberVO> memList = null; // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			String sql = " select * from mymember ";
			pstmt = conn.prepareStatement(sql);
			
			rs = pstmt.executeQuery();
			
			while(rs.next()) {
				if(memList == null) memList = new ArrayList<MemberVO>();
				
				// 한 개의 레코드가 저장될 VO객체 생성
				MemberVO memVo = new MemberVO();
				
				// ResultSet에서 각 컬럼값들을 가져와 VO의 멤버변수에 저장한다.
				memVo.setMem_id(rs.getString("mem_id"));
				memVo.setMem_pass(rs.getString("mem_pass"));
				memVo.setMem_name(rs.getString("mem_name"));
				memVo.setMem_tel(rs.getString("mem_tel"));
				memVo.setMem_addr(rs.getString("mem_addr"));
				
				// 구성된 VO객체를 List에 추가한다.
				memList.add(memVo);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(rs != null) try { rs.close(); } catch (SQLException e) {}
			if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}
		
		return memList;
	}

	@Override
	public int getMemIdCount(String memId) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		int cnt = 0; // 반환값이 저장될 변수
		
		try {
			conn = DBUtil3.getConnection();
			String sql = " select count(*) as cnt from mymember where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memId);
			
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				cnt = rs.getInt("cnt");
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(rs != null) try { rs.close(); } catch (SQLException e) {}
			if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}
		
		return cnt;
	}

	@Override
	public int updateMember2(Map<String, String> paramMap) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0; // 반환값이 저장될 변수
		
		// key값 정보 ==> 회원ID(memid), 수정할컬럼명(field), 수정할데이터(data)
		try {
			conn = DBUtil3.getConnection();
			String sql = " update mymember set " + paramMap.get("field") + " = ?"
					+ " where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, paramMap.get("data"));
			pstmt.setString(2, paramMap.get("memid"));
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(pstmt != null) try { pstmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}
		
		return cnt;
	}
	
}

[MemberServiceImpl.java]

package kr.or.ddit.member.service;

import java.util.List;
import java.util.Map;

import kr.or.ddit.member.dao.IMemberDao;
import kr.or.ddit.member.dao.MemberDaoImpl;
import kr.or.ddit.vo.MemberVO;

public class MemberServiceImpl implements IMemberService {

	private IMemberDao dao; // DAO객체 변수 선언
	
	// 생성자
	public MemberServiceImpl() {
		dao = new MemberDaoImpl();
	}

	@Override
	public int insertMember(MemberVO memVo) {
		return dao.insertMember(memVo);
	}

	@Override
	public int deleteMember(String memId) {
		return dao.deleteMember(memId);
	}

	@Override
	public int updateMember(MemberVO memVo) {
		return dao.updateMember(memVo);
	}

	@Override
	public List<MemberVO> getAllMember() {
		return dao.getAllMember();
	}

	@Override
	public int getMemIdCount(String memId) {
		return dao.getMemIdCount(memId);
	}

	@Override
	public int updateMember2(Map<String, String> paramMap) {
		return dao.updateMember2(paramMap);
	}

}

[MemberController.java]

package kr.or.ddit.member.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.vo.MemberVO;

public class MemberController {
	
	private IMemberService service; // Service객체 변수 선언
	private Scanner scan;
	
	// 생성자
	public MemberController() {
		service = new MemberServiceImpl();
		scan = new Scanner(System.in);
	}

	public static void main(String[] args) {
		
		new MemberController().StartMember();
		
	}
	
	// 시작 메서드
	public void StartMember() {
		while(true) {
			int choice = displayMenu();
			switch(choice) {
				case 1: // 추가
					insertMember(); break;
				case 2: // 삭제
					deleteMember(); break;
				case 3: // 수정 ==> 전체 항목 수정
					updateMember(); break;
				case 4: // 전체 출력
					displayAllMember(); break;
				case 5: // 수정2 ==> 원하는 항목 수정
					updateMember2(); break;
				case 0: // 작업 끝.
					System.out.println();
					System.out.println("작업을 마칩니다...");
					return;
				default:
					System.out.println();
					System.out.println("작업 번호를 잘못 입력했습니다.");
					System.out.println("다시 입력하세요...");
			}
		}
	}
	
	// 원하는 항목만 수정하는 메서드
	private void updateMember2() {
		
		System.out.println();
		System.out.println("수정할 회원 정보를 입력하세요...");
		System.out.print("수정할 회원ID >> ");
		String id = scan.nextLine();
		
		if(service.getMemIdCount(id) == 0) {
			System.out.println();
			System.out.println(id + "은(는) 없는 회원ID 입니다...");
			System.out.println("수정 작업을 마칩니다...");
			System.out.println();
			return;
		}
		
//		update mymember set mem_tel = '새로운 전화번호' where mem_id = '수정할 회원ID';
//		update mymember set mem_name = '새로운 이름' where mem_id = '수정할 회원ID';
//		...
		
		int num; // 수정 항목 선택 번호가 저장될 변수
		String updateField = null; // 수정할 컬럼명이 저장될 변수
		String updatetitle = null; // 수정할 데이터를 입력 받을 때 출력할 메시지
		do {
			System.out.println();
			System.out.println("수정할 항목을 선택하세요...");
			System.out.println("1. 비밀번호     2. 회원이름     3. 전화번호     4. 회원주소");
			System.out.println("--------------------------------------------");
			System.out.print("수정할 항목 선택 >> ");
			num = scan.nextInt();
			
			switch(num) {
				case 1: 
					updateField = "mem_pass"; updatetitle = "비밀번호"; break;
				case 2:
					updateField = "mem_name"; updatetitle = "회원이름"; break;
				case 3:
					updateField = "mem_tel"; updatetitle = "전화번호"; break;
				case 4:
					updateField = "mem_addr"; updatetitle = "회원주소"; break;
				default:
					System.out.println();
					System.out.println("수정할 항목을 잘못 선택했습니다.");
					System.out.println("다시 선택하세요...");
					System.out.println();
			}
			
		}while(num < 1 || num > 4);
		
		scan.nextLine(); // 버퍼 비우기
		System.out.println();
		System.out.print("새로운 " + updatetitle + " >> ");
		String updateData = scan.nextLine();
		
		// 수정할 정보를 Map에 저장한다.
		// key값 정보 ==> 회원ID(memid), 수정할컬럼명(field), 수정할데이터(data)
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put("memid", id);
		paramMap.put("field", updateField);
		paramMap.put("data", updateData);
		
		int cnt = service.updateMember2(paramMap);
		
		if(cnt > 0) {
			System.out.println();
			System.out.println(id + " 회원 정보 수정 완료!!!");
			System.out.println();
		}else {
			System.out.println();
			System.out.println(id + " 회원 정보 수정 실패~~~");
			System.out.println();
		}
		
	}
	
	// 전체 회원 정보 출력
	private void displayAllMember() {
		
		// DB에 저장된 데이터 가져오기
		List<MemberVO> memList = service.getAllMember();
		
		System.out.println();
		System.out.println("-----------------------------------------");
		System.out.println(" ID\t 비밀번호\t 이름\t 전화번호\t 주소");
		System.out.println("-----------------------------------------");
		
		if(memList == null || memList.size() == 0) {
			System.out.println("\t등록된 회원 정보가 하나도 없습니다.");
		}else {
			for(MemberVO memVo : memList) {
				String memId = memVo.getMem_id();
				String memPass = memVo.getMem_pass();
				String memName = memVo.getMem_name();
				String memTel = memVo.getMem_tel();
				String memAddr = memVo.getMem_addr();
				
				System.out.println(memId + "\t" + memPass + "\t" + memName + "\t" + memTel + "\t" + memAddr);
			}
		}
		
		System.out.println("-----------------------------------------");
		
	}
	
	// 수정 메서드
	private void updateMember() {
		
		System.out.println();
		System.out.println("수정할 회원 정보를 입력하세요...");
		System.out.print("수정할 회원ID >> ");
		String id = scan.nextLine();
		
		if(service.getMemIdCount(id) == 0) {
			System.out.println();
			System.out.println(id + "은(는) 없는 회원ID 입니다...");
			System.out.println("수정 작업을 마칩니다...");
			System.out.println();
			return;
		}
		
		System.out.print("새로운 비밀번호 입력 >> ");
		String newPass = scan.next();
		
		System.out.print("새로운 회원이름 입력 >> ");
		String newName = scan.next();
		
		System.out.print("새로운 전화번호 입력 >> ");
		String newTel = scan.next();
		
		scan.nextLine(); // 버퍼 비우기
		
		System.out.print("새로운 회원주소 입력 >> ");
		String newAddr = scan.nextLine();
		
		// 입력받은 수정할 데이터를 VO객체에 저장한다.
		MemberVO memVo = new MemberVO();
		memVo.setMem_id(id);
		memVo.setMem_pass(newPass);
		memVo.setMem_name(newName);
		memVo.setMem_tel(newTel);
		memVo.setMem_addr(newAddr);
		
		int cnt = service.updateMember(memVo);
		
		if(cnt > 0) {
			System.out.println();
			System.out.println(id + " 회원 정보 수정 완료!!!");
			System.out.println();
		}else {
			System.out.println();
			System.out.println(id + " 회원 정보 수정 실패~~~");
			System.out.println();
		}
		
	}
	
	// 삭제 메서드
	private void deleteMember() {
		
		System.out.println();
		System.out.println("삭제할 회원 정보를 입력하세요...");
		System.out.print("삭제할 회원ID >> ");
		String id = scan.nextLine();
		
		if(service.getMemIdCount(id) == 0) {
			System.out.println();
			System.out.println(id + "은(는) 없는 회원ID 입니다...");
			System.out.println("삭제 작업을 마칩니다...");
			System.out.println();
			return;
		}
		
		int cnt = service.deleteMember(id);
		
		if(cnt > 0) {
			System.out.println();
			System.out.println(id + " 회원 정보 삭제 성공!!!");
			System.out.println();
		}else {
			System.out.println();
			System.out.println(id + " 회원 정보 삭제 실패~~~");
			System.out.println();
		}
		
	}
	
	// 추가 메서드
	private void insertMember() {
		
		System.out.println();
		System.out.println("새롭게 추가할 회원 정보를 입력하세요...");
		
		int count = 0;
		String id = null; // 입력한 회원 ID가 저장될 변수
		do {
			System.out.print("회원 ID 입력 >> ");
			id = scan.next();
			
			count = service.getMemIdCount(id);
			
			if(count > 0) {
				System.out.println(id + "은(는) 이미 등록된 회원ID 입니다.");
				System.out.println("다른 회원ID를 입력하세요...");
				System.out.println();
			}
			
		}while(count > 0);
		
		System.out.print("비밀번호 입력 >> ");
		String pass = scan.next();
		
		System.out.print("회원이름 입력 >> ");
		String name = scan.next();
		
		System.out.print("전화번호 입력 >> ");
		String tel = scan.next();
		
		scan.nextLine(); // 버퍼 비우기
		
		System.out.print("회원주소 입력 >> ");
		String addr = scan.nextLine();
		
		// 입력 받은 데이터들을 VO객체에 저장한다.
		MemberVO memVo = new MemberVO();
		memVo.setMem_id(id);
		memVo.setMem_pass(pass);
		memVo.setMem_name(name);
		memVo.setMem_tel(tel);
		memVo.setMem_addr(addr);
		
		int cnt = service.insertMember(memVo);
		
		if(cnt > 0) {
			System.out.println();
			System.out.println(id + "회원 정보 추가 완료!!!");
			System.out.println();
		}else {
			System.out.println();
			System.out.println(id + "회원 정보 추가 실패~~~");
			System.out.println();
		}
		
	}

	// 메뉴를 출력하고 입력받은 선택 번호를 반환하는 메서드
	private int displayMenu() {
		System.out.println("=== 작업 선택 ===");
		System.out.println("1. 자료 추가");
		System.out.println("2. 자료 삭제");
		System.out.println("3. 자료 수정");
		System.out.println("4. 전체 자료 출력");
		System.out.println("5. 자료 수정 2");
		System.out.println("0. 작업 끝");
		System.out.println("--------------");
		System.out.print("작업 선택 >> ");
		return Integer.parseInt(scan.nextLine());
	}

}


'대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글

230920_MyBatis 1  (0) 2023.09.20
230919_MVC 2  (0) 2023.09.18
230915_JDBC 2  (0) 2023.09.15
230914_JDBC 2  (0) 2023.09.14
230913_JDBC 1  (0) 2023.09.12