MVCモード
119557 ワード
MVCモード
Service
プロジェクト構造
DAO
IMemberDAOインタフェース
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
public interface IMemberDAO {
//public int insertMember();
// 여기 매개변수로 String name, String 어쩌구 ... 주면 나중에 유지보수가 귀찮을것같아 => VO를 만들자!
// MemberVO에 담겨진 자료를 DB에 insert하는 메소드
// @param mv DB에 insert할 자료가 저장된 MemberVO객체
// @return DB작업이 성공하며 1이상의 값이 반환되고 실패하면 0이 반환된다
public int insertMember(MemberVO mv);
/*
하나의 MemberVO 객체를 받아서 DB에 update하는메서드
@param mv update할 회원정보가 들어있는 MemberVO객체
@return 작업성공:1, 작업실패:0
*/
public int updateMember(MemberVO mv);
/*
회원Id를 매개변수로 받아서 그 회원정보를 삭제하는 메서드
@param memId 삭제할 회원ID
@return 작업성공:1, 작업실패:0
*/
public int deleteMember(String memId);
/*
DB의 mymember테이블에 있는 전체레코드를 가져와서 List에 담아 반환하는 메서드
@return MemberVO객체를 담고있는 List객체
*/
public List<MemberVO> getAllMemberList();
/*
주어진 회원ID가 존재하는지 여부를 알아내는 메소드
@param memId 검색할 회원ID
@return 해당회원ID가 있으면 true, 없으면 false
*/
public boolean checkMember(String memId);
/*
* MemberVo객체에 담긴 회원정보를 ㅣㅇ요하여 회원을 검색하는 메소드
* @param mv 검색할 자효가 들어있는 MemberVO 객체
* @return 검색된 결과를 담은 List객체
*/
public List<MemberVO> searchMemberList(MemberVO mv);
}
MemberDaoImplクラス
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
import kr.or.ddit.util.JDBCUtil;
import kr.or.ddit.util.JDBCUtil2;
import kr.or.ddit.util.JDBCUtil3;
public class MemberDaoImpl implements IMemberDAO{
private Connection conn;
private Statement stmt;
private PreparedStatement pstmt;
private ResultSet rs;
@Override
public int insertMember(MemberVO mv) {
int cnt =0;
try {
conn = JDBCUtil3.getConnection();
String sql ="insert into mymember " +
" (mem_id,MEM_NAME, mem_tel, mem_addr) " +
" values "
+" (?,?,?,?)";
//멤버의 정보는 VO에 담겨있으므로
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mv.getMemId());
pstmt.setString(2, mv.getMemName());
pstmt.setString(3, mv.getMemTel());
pstmt.setString(4, mv.getMemAddr());
cnt = pstmt.executeUpdate();
// DAO가 할일은 아닌듯 VIEW일듯
// if(cnt>0) {
// System.out.println(memId+"회원 추가 작업 성공");
// }else {
// System.out.println(memId+"회원 추가 작업 실패");
// }
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
// 커넥션을 해제해 주지 않으면 오라클 서버에서 메모리를 소비하고 있는 채로 유지되게 된다
JDBCUtil2.close(conn, stmt, pstmt, rs);
}
return cnt;
}
@Override
public int updateMember(MemberVO mv) {
int cnt =0;
try {
conn = JDBCUtil2.getConnection();
String sql = " update mymember " +
" set mem_name = ?, " +
" mem_tel = ?, " +
" mem_addr = ? " +
" where mem_id = ? " ;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mv.getMemName());
pstmt.setString(2, mv.getMemTel());
pstmt.setString(3, mv.getMemAddr());
pstmt.setString(4, mv.getMemId());
cnt = pstmt.executeUpdate();
// view일듯
// if(cnt>0) {
// System.out.println(memId+"회원이 정보를 수정했습니다");
// }else {
// System.out.println(memId+"회원의 정보 수정 실패");
// }
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil2.close(conn, stmt, pstmt, rs);
}
return cnt;
}
@Override
public int deleteMember(String memId) {
int cnt =0;
try {
conn = JDBCUtil.getConnection();
// conn = JDBCUtil2.getConnection();
// conn = JDBCUtil3.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 {
JDBCUtil2.close(conn, stmt, pstmt, rs);
}
return cnt;
}
@Override
public List<MemberVO> getAllMemberList() {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
conn = JDBCUtil2.getConnection();
String sql = "select * from mymember";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()) {
// VO객체 안에 멤버객체를 담아...
MemberVO mv = new MemberVO();
mv.setMemId(rs.getString("mem_id"));
mv.setMemName(rs.getString("mem_name"));
mv.setMemTel(rs.getString("mem_tel"));
mv.setMemAddr(rs.getString("mem_addr"));
// 이제 그걸 리스트에 넣어...
memList.add(mv);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil2.close(conn,stmt,pstmt,rs);
}
return memList;
}
@Override
public boolean checkMember(String memId) {
boolean chk = false; //회원 존재여부 체크
try {
conn = JDBCUtil2.getConnection();
String sql = "select count(*) as cnt from mymember "
+ " where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setNString(1, memId);
rs = pstmt.executeQuery();
int cnt=0;
//레코드를 한줄씩 이동.
while(rs.next()) {
cnt = rs.getInt("CNT");
}
if(cnt>0) { //중복이 존재한다
chk=true;
}
} catch (SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil2.close(conn, stmt, pstmt, rs);
}
return chk;
}
@Override
public List<MemberVO> searchMemberList(MemberVO mv) {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
conn = JDBCUtil3.getConnection();
// 들어오는변수의 경우의수가 여러가지이므로 동적쿼리가 필요하다. 자바변수를 이용!
String sql="select * from mymember where 1=1 ";
// 1=1은 참,의미가 업ㅅ으나 얘가 써짐으로서 조건들을 and와 함께 나열할 수 있게되었음
if(mv.getMemId() != null && !mv.getMemId().equals("")) {
sql += " and mem_id = ? ";
}
if(mv.getMemName() != null && !mv.getMemName().equals("")) {
sql += " and mem_name = ? ";
}
if(mv.getMemTel() != null && !mv.getMemTel().equals("")) {
sql += " and mem_tel = ? ";
}
if(mv.getMemAddr() != null && !mv.getMemAddr().equals("")) {
sql += " and mem_addr like '%' ||?|| '%' ";
}
pstmt = conn.prepareStatement(sql);
// 이제 물음표가 뭔지 알려줘야지 index가 물음표 위치를 가리키는듯!
int index=1;
if(mv.getMemId() != null && !mv.getMemId().equals("")) {
pstmt.setString(index++, mv.getMemId());
}
if(mv.getMemName() != null && !mv.getMemName().equals("")) {
pstmt.setString(index++, mv.getMemName());
}
if(mv.getMemTel() != null && !mv.getMemTel().equals("")) {
pstmt.setString(index++, mv.getMemTel());
}
if(mv.getMemAddr() != null && !mv.getMemAddr().equals("")) {
pstmt.setString(index++, mv.getMemAddr());
}
rs = pstmt.executeQuery();
while(rs.next()) {
// VO객체 안에 멤버객체를 담아...
// mv에는 검색조건이 담겨있음. mv를 써도 되지만.. 구분해주려고 mv2로 쓸게
MemberVO mv2 = new MemberVO();
mv2.setMemId(rs.getString("mem_id"));
mv2.setMemName(rs.getString("mem_name"));
mv2.setMemTel(rs.getString("mem_tel"));
mv2.setMemAddr(rs.getString("mem_addr"));
// 이제 그걸 리스트에 넣어...
memList.add(mv2);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil3.close(conn, stmt, pstmt, rs);
}
return memList;
}
}
Service
IMemberService
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
// Service객체는 DAO에 설정된 메서드를 원하는 작업에 맞게호출하여 결과를 받아오고,
// 받아온 자료를 Controller에게 보내주는 역할을한다
// +)만약 메일을 보낼때 메일을 보내는 DAO를 쓰고 마지막에 그 기록까지 남기려면 기록을 남기는 DAO까지 Service에 써줘야.
public interface IMemberService {
//public int insertMember();
// 여기 매개변수로 String name, String 어쩌구 ... 주면 나중에 유지보수가 귀찮을것같아 => VO를 만들자!
// MemberVO에 감겨진 자료를 DB에 insert하는 메소드
// @param mv DB에 insert할 자료가 저장된 MemberVO객체
// @return DB작업이 성공하며 1이상의 값이 반환되고 실패하면 0이 반환된다
public int insertMember(MemberVO mv);
/*
하나의 MemberVO 객체를 받아서 DB에 update하는메서드
@param mv update할 회원정보가 들어있는 MemberVO객체
@return 작업성공:1, 작업실패:0
*/
public int updateMember(MemberVO mv);
/*
회원Id를 매개변수로 받아서 그 회원정보를 삭제하는 메서드
@param memId 삭제할 회원ID
@return 작업성공:1, 작업실패:0
*/
public int deleteMember(String memId);
/*
DB의 mymember테이블에 있는 전체레코드를 가져와서 List에 담아 반환하는 메서드
@return MemberVO객체를 담고있는 List객체
*/
public List<MemberVO> getAllMemberList();
/*
주어진 회원ID가 존재하는지 여부를 알아내는 메소드
@param memId 검색할 회원ID
@return 해당회원ID가 있으면 true, 없으면 false
*/
public boolean checkMember(String memId);
/*
* MemberVo객체에 담긴 회원정보를 ㅣㅇ요하여 회원을 검색하는 메소드
* @param mv 검색할 자효가 들어있는 MemberVO 객체
* @return 검색된 결과를 담은 List객체
*/
public List<MemberVO> searchMemberList(MemberVO mv);
}
MemberServiceImpl
import java.util.List;
import kr.or.ddit.member.dao.IMemberDAO;
import kr.or.ddit.member.dao.MemberDaoImpl;
import kr.or.ddit.member.vo.MemberVO;
public class MemberServiceImpl implements IMemberService{
private IMemberDAO memDAO;
public MemberServiceImpl() {
memDAO = new MemberDaoImpl();
}
@Override
public int insertMember(MemberVO mv) {
// TODO Auto-generated method stub
return memDAO.insertMember(mv);
}
@Override
public int updateMember(MemberVO mv) {
return memDAO.updateMember(mv);
}
@Override
public int deleteMember(String memId) {
return memDAO.deleteMember(memId);
}
@Override
public List<MemberVO> getAllMemberList() {
return memDAO.getAllMemberList();
}
@Override
public boolean checkMember(String memId) {
return memDAO.checkMember(memId);
}
@Override
public List<MemberVO> searchMemberList(MemberVO mv) {
return memDAO.searchMemberList(mv);
}
}
VO
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
// Service객체는 DAO에 설정된 메서드를 원하는 작업에 맞게호출하여 결과를 받아오고,
// 받아온 자료를 Controller에게 보내주는 역할을한다
// +)만약 메일을 보낼때 메일을 보내는 DAO를 쓰고 마지막에 그 기록까지 남기려면 기록을 남기는 DAO까지 Service에 써줘야.
public interface IMemberService {
//public int insertMember();
// 여기 매개변수로 String name, String 어쩌구 ... 주면 나중에 유지보수가 귀찮을것같아 => VO를 만들자!
// MemberVO에 감겨진 자료를 DB에 insert하는 메소드
// @param mv DB에 insert할 자료가 저장된 MemberVO객체
// @return DB작업이 성공하며 1이상의 값이 반환되고 실패하면 0이 반환된다
public int insertMember(MemberVO mv);
/*
하나의 MemberVO 객체를 받아서 DB에 update하는메서드
@param mv update할 회원정보가 들어있는 MemberVO객체
@return 작업성공:1, 작업실패:0
*/
public int updateMember(MemberVO mv);
/*
회원Id를 매개변수로 받아서 그 회원정보를 삭제하는 메서드
@param memId 삭제할 회원ID
@return 작업성공:1, 작업실패:0
*/
public int deleteMember(String memId);
/*
DB의 mymember테이블에 있는 전체레코드를 가져와서 List에 담아 반환하는 메서드
@return MemberVO객체를 담고있는 List객체
*/
public List<MemberVO> getAllMemberList();
/*
주어진 회원ID가 존재하는지 여부를 알아내는 메소드
@param memId 검색할 회원ID
@return 해당회원ID가 있으면 true, 없으면 false
*/
public boolean checkMember(String memId);
/*
* MemberVo객체에 담긴 회원정보를 ㅣㅇ요하여 회원을 검색하는 메소드
* @param mv 검색할 자효가 들어있는 MemberVO 객체
* @return 검색된 결과를 담은 List객체
*/
public List<MemberVO> searchMemberList(MemberVO mv);
}
import java.util.List;
import kr.or.ddit.member.dao.IMemberDAO;
import kr.or.ddit.member.dao.MemberDaoImpl;
import kr.or.ddit.member.vo.MemberVO;
public class MemberServiceImpl implements IMemberService{
private IMemberDAO memDAO;
public MemberServiceImpl() {
memDAO = new MemberDaoImpl();
}
@Override
public int insertMember(MemberVO mv) {
// TODO Auto-generated method stub
return memDAO.insertMember(mv);
}
@Override
public int updateMember(MemberVO mv) {
return memDAO.updateMember(mv);
}
@Override
public int deleteMember(String memId) {
return memDAO.deleteMember(memId);
}
@Override
public List<MemberVO> getAllMemberList() {
return memDAO.getAllMemberList();
}
@Override
public boolean checkMember(String memId) {
return memDAO.checkMember(memId);
}
@Override
public List<MemberVO> searchMemberList(MemberVO mv) {
return memDAO.searchMemberList(mv);
}
}
MemberVO
// DB테이블에 있는 컬럼을 기준으로 데이ㅏ터를 객체화한 클래스이다
/*
DB테이블의 '컬럼'이 이클래스의 '멤버변수'가 된다
DB테이블의 컬럼과 클래스의 멤버변수를 매핑하는 역할을 수행한다
*/
public class MemberVO {
private String memId;
private String memName;
private String memTel;
private String memAddr;
public String getMemId() {
return memId;
}
public void setMemId(String memId) {
this.memId = memId;
}
public String getMemName() {
return memName;
}
public void setMemName(String memName) {
this.memName = memName;
}
public String getMemTel() {
return memTel;
}
public void setMemTel(String memTel) {
this.memTel = memTel;
}
public String getMemAddr() {
return memAddr;
}
public void setMemAddr(String memAddr) {
this.memAddr = memAddr;
}
@Override
public String toString() {
return "MemberVO [memId=" + memId + ", memName=" + memName + ", memTel=" + memTel + ", memAddr=" + memAddr
+ "]";
}
}
Main package kr.or.ddit.member;
import java.util.List;
import java.util.Scanner;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.member.vo.MemberVO;
/*
회원정보를 관리하는 프로그램을 작성하는데
아래의 메뉴를 모두 구현하시오. (CRUD기능 구현하기)
(DB의 MYMEMBER테이블을 이용하여 작업한다.)
* 자료 삭제는 회원ID를 입력 받아서 삭제한다.
예시메뉴)
----------------------
== 작업 선택 ==
1. 자료 입력 ---> insert
2. 자료 삭제 ---> delete
3. 자료 수정 ---> update
4. 전체 자료 출력 ---> select
5. 작업 끝.
----------------------
// 회원관리 프로그램 테이블 생성 스크립트
create table mymember(
mem_id varchar2(8) not null, -- 회원ID
mem_name varchar2(100) not null, -- 이름
mem_tel varchar2(50) not null, -- 전화번호
mem_addr varchar2(128), -- 주소
reg_dt DATE DEFAULT sysdate, -- 등록일
CONSTRAINT MYMEMBER_PK PRIMARY KEY (mem_id)
);
*/
public class MemberInfoMain {
// private Connection conn;
// private Statement stmt;
// private PreparedStatement pstmt;
// private ResultSet rs;
private IMemberService memService;
private Scanner scan = new Scanner(System.in);
public MemberInfoMain() {
memService = new MemberServiceImpl();
}
/**
* 메뉴를 출력하는 메서드
*/
public void displayMenu(){
System.out.println();
System.out.println("----------------------");
System.out.println(" === 작 업 선 택 ===");
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("----------------------");
System.out.print("원하는 작업 선택 >> ");
}
/**
* 프로그램 시작메서드
*/
public void start(){
int choice;
do{
displayMenu(); //메뉴 출력
choice = scan.nextInt(); // 메뉴번호 입력받기
switch(choice){
case 1 : // 자료 입력
insertMember();
break;
case 2 : // 자료 삭제
deleteMember();
break;
case 3 : // 자료 수정
updateMember();
break;
case 4 : // 전체 자료 출력
displayMemberAll();
break;
case 5 : // 자료검색
searchMember();
break;
case 6 : // 작업 끝
System.out.println("작업을 마칩니다.");
break;
default :
System.out.println("번호를 잘못 입력했습니다. 다시입력하세요");
}
}while(choice!=6);
}
//회원정보를 검색하는 메서드
private void searchMember() {
// 검색할 회원ID, 회원이름, 전화번호, 주소 등을 입력하면 입력한 정보만을 사용하여 검색하는기능을 구현하시오
// 주소는 입력한 값이 포함만 되어도 검색되도록 한다
// 입력을 하지 않을 자료는 앤터키로 다음입력으로 넘긴다.
scan.nextLine(); //입력버퍼 비우기
System.out.println();
System.out.println("검색할 정보를입력하세요");
System.out.print("회원 ID>> ");
String memId=scan.nextLine().trim(); //trim은 혹시모를 공백제거
System.out.print("회원 이름>> ");
String memName = scan.nextLine().trim();
System.out.print("회원 전화번호>> ");
String memTel = scan.nextLine().trim();
System.out.print("회원 주소>> ");
String memAddr = scan.nextLine().trim();
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemId(memId);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
List<MemberVO> memList = memService.searchMemberList(mv);
System.out.println();
System.out.println("---------------------------------------");
System.out.println(" ID\t이름\t전화번호\t\t주소");
System.out.println("---------------------------------------");
if(memList.size()==0) {
System.out.println("회원정보가 존재하지 않습니다");
} else {
for(MemberVO mv2 : memList) {
System.out.println(mv2.getMemId()+"\t"+mv2.getMemName()+"\t"+mv2.getMemTel()+"\t\t"+mv2.getMemAddr());
}
}
System.out.println("---------------------------------------");
System.out.println("검색 작업 끝");
}
// 회원정보를 삭제하기 위한 메소드
private void deleteMember() {
System.out.println();
System.out.println("삭제할 회원정보를 입력하세요");
System.out.print("회원 ID : ");
String memId = scan.next();
int cnt = memService.deleteMember(memId);
if(cnt >0) {
System.out.println(memId+"회원정보를 삭제했습니다");
}else {
System.out.println(memId+"회원정보를 삭제 실패");
}
}
// 회원정보 수정하기 위한 메서드
private void updateMember() {
boolean chk = false; //등록여부 체크
String memId ="";
do {
System.out.println();
System.out.println("추가할 회원정보를 입력하세요");
System.out.print("회원 ID : ");
memId = scan.next();
chk = checkMember(memId);
if(chk==false) {
System.out.println("회원ID가 "+memId+"인 회원 존재하지 않습니다.");
System.out.println("다시 입력하세요");
}
} while(chk==false); //중복 없을때
System.out.println("회원이름 >> ");
String memName = scan.next();
System.out.println("회원 전화번호 >> ");
String memTel = scan.next();
scan.nextLine(); // 버퍼 비우기
System.out.println("회원주소 >> ");
String memAddr = scan.nextLine();
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemName(memName);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
int cnt = memService.updateMember(mv);
// 이제 업데이트를 시켜줘보자!!!
if(cnt>0) {
System.out.println(memId+"회원이 정보를 수정했습니다");
}else {
System.out.println(memId+"회원의 정보 수정 실패");
}
}
// 전체회원정보를 출력하는 메서드
private void displayMemberAll() {
System.out.println();
System.out.println("---------------------------------------");
System.out.println(" ID\t이름\t전화번호\t\t주소");
System.out.println("---------------------------------------");
List<MemberVO> memList = memService.getAllMemberList();
if(memList.size()==0) {
System.out.println("회원정보가 존재하지 않습니다");
} else {
for(MemberVO mv : memList) {
System.out.println(mv.getMemId()+"\t"+mv.getMemName()+"\t"+mv.getMemTel()+"\t\t"+mv.getMemAddr());
}
}
System.out.println("---------------------------------------");
System.out.println("출력작업 끝");
}
// 회원을 추가하는 메서드
private void insertMember() {
boolean chk = false; //등록여부 체크
String memId ="";
do {
System.out.println();
System.out.println("추가할 회원정보를 입력하세요");
System.out.print("회원 ID : ");
memId = scan.next();
chk = checkMember(memId);
if(chk==true) {
System.out.println("회원ID가 "+memId+"인 회원은 이미 존재합니다");
System.out.println("다시 입력하세요");
}
} while(chk==true);
System.out.println("회원이름 >> ");
String memName = scan.next();
System.out.println("회원 전화번호 >> ");
String memTel = scan.next();
scan.nextLine(); // 버퍼 비우기
System.out.println("회원주소 >> ");
String memAddr = scan.nextLine();
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemName(memName);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
int cnt = memService.insertMember(mv);
if(cnt>0) {
System.out.println(memId+"회원 추가 작업 성공");
}else {
System.out.println(memId+"회원 추가 작업 실패");
}
}
// 회원 아이디를 이용하여 회원이 존재하는지 알려주는 메소드
// @param memId
// @return true : 회원이 존재함, false : 회원이 존재하지 않음
private boolean checkMember(String memId) {
return memService.checkMember(memId);
}
public static void main(String[] args) {
MemberInfoMain memObj = new MemberInfoMain();
memObj.start();
}
}
Reference
この問題について(MVCモード), 我々は、より多くの情報をここで見つけました
https://velog.io/@cheshirehyun/MVC-패턴
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
package kr.or.ddit.member;
import java.util.List;
import java.util.Scanner;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.member.vo.MemberVO;
/*
회원정보를 관리하는 프로그램을 작성하는데
아래의 메뉴를 모두 구현하시오. (CRUD기능 구현하기)
(DB의 MYMEMBER테이블을 이용하여 작업한다.)
* 자료 삭제는 회원ID를 입력 받아서 삭제한다.
예시메뉴)
----------------------
== 작업 선택 ==
1. 자료 입력 ---> insert
2. 자료 삭제 ---> delete
3. 자료 수정 ---> update
4. 전체 자료 출력 ---> select
5. 작업 끝.
----------------------
// 회원관리 프로그램 테이블 생성 스크립트
create table mymember(
mem_id varchar2(8) not null, -- 회원ID
mem_name varchar2(100) not null, -- 이름
mem_tel varchar2(50) not null, -- 전화번호
mem_addr varchar2(128), -- 주소
reg_dt DATE DEFAULT sysdate, -- 등록일
CONSTRAINT MYMEMBER_PK PRIMARY KEY (mem_id)
);
*/
public class MemberInfoMain {
// private Connection conn;
// private Statement stmt;
// private PreparedStatement pstmt;
// private ResultSet rs;
private IMemberService memService;
private Scanner scan = new Scanner(System.in);
public MemberInfoMain() {
memService = new MemberServiceImpl();
}
/**
* 메뉴를 출력하는 메서드
*/
public void displayMenu(){
System.out.println();
System.out.println("----------------------");
System.out.println(" === 작 업 선 택 ===");
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("----------------------");
System.out.print("원하는 작업 선택 >> ");
}
/**
* 프로그램 시작메서드
*/
public void start(){
int choice;
do{
displayMenu(); //메뉴 출력
choice = scan.nextInt(); // 메뉴번호 입력받기
switch(choice){
case 1 : // 자료 입력
insertMember();
break;
case 2 : // 자료 삭제
deleteMember();
break;
case 3 : // 자료 수정
updateMember();
break;
case 4 : // 전체 자료 출력
displayMemberAll();
break;
case 5 : // 자료검색
searchMember();
break;
case 6 : // 작업 끝
System.out.println("작업을 마칩니다.");
break;
default :
System.out.println("번호를 잘못 입력했습니다. 다시입력하세요");
}
}while(choice!=6);
}
//회원정보를 검색하는 메서드
private void searchMember() {
// 검색할 회원ID, 회원이름, 전화번호, 주소 등을 입력하면 입력한 정보만을 사용하여 검색하는기능을 구현하시오
// 주소는 입력한 값이 포함만 되어도 검색되도록 한다
// 입력을 하지 않을 자료는 앤터키로 다음입력으로 넘긴다.
scan.nextLine(); //입력버퍼 비우기
System.out.println();
System.out.println("검색할 정보를입력하세요");
System.out.print("회원 ID>> ");
String memId=scan.nextLine().trim(); //trim은 혹시모를 공백제거
System.out.print("회원 이름>> ");
String memName = scan.nextLine().trim();
System.out.print("회원 전화번호>> ");
String memTel = scan.nextLine().trim();
System.out.print("회원 주소>> ");
String memAddr = scan.nextLine().trim();
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemId(memId);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
List<MemberVO> memList = memService.searchMemberList(mv);
System.out.println();
System.out.println("---------------------------------------");
System.out.println(" ID\t이름\t전화번호\t\t주소");
System.out.println("---------------------------------------");
if(memList.size()==0) {
System.out.println("회원정보가 존재하지 않습니다");
} else {
for(MemberVO mv2 : memList) {
System.out.println(mv2.getMemId()+"\t"+mv2.getMemName()+"\t"+mv2.getMemTel()+"\t\t"+mv2.getMemAddr());
}
}
System.out.println("---------------------------------------");
System.out.println("검색 작업 끝");
}
// 회원정보를 삭제하기 위한 메소드
private void deleteMember() {
System.out.println();
System.out.println("삭제할 회원정보를 입력하세요");
System.out.print("회원 ID : ");
String memId = scan.next();
int cnt = memService.deleteMember(memId);
if(cnt >0) {
System.out.println(memId+"회원정보를 삭제했습니다");
}else {
System.out.println(memId+"회원정보를 삭제 실패");
}
}
// 회원정보 수정하기 위한 메서드
private void updateMember() {
boolean chk = false; //등록여부 체크
String memId ="";
do {
System.out.println();
System.out.println("추가할 회원정보를 입력하세요");
System.out.print("회원 ID : ");
memId = scan.next();
chk = checkMember(memId);
if(chk==false) {
System.out.println("회원ID가 "+memId+"인 회원 존재하지 않습니다.");
System.out.println("다시 입력하세요");
}
} while(chk==false); //중복 없을때
System.out.println("회원이름 >> ");
String memName = scan.next();
System.out.println("회원 전화번호 >> ");
String memTel = scan.next();
scan.nextLine(); // 버퍼 비우기
System.out.println("회원주소 >> ");
String memAddr = scan.nextLine();
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemName(memName);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
int cnt = memService.updateMember(mv);
// 이제 업데이트를 시켜줘보자!!!
if(cnt>0) {
System.out.println(memId+"회원이 정보를 수정했습니다");
}else {
System.out.println(memId+"회원의 정보 수정 실패");
}
}
// 전체회원정보를 출력하는 메서드
private void displayMemberAll() {
System.out.println();
System.out.println("---------------------------------------");
System.out.println(" ID\t이름\t전화번호\t\t주소");
System.out.println("---------------------------------------");
List<MemberVO> memList = memService.getAllMemberList();
if(memList.size()==0) {
System.out.println("회원정보가 존재하지 않습니다");
} else {
for(MemberVO mv : memList) {
System.out.println(mv.getMemId()+"\t"+mv.getMemName()+"\t"+mv.getMemTel()+"\t\t"+mv.getMemAddr());
}
}
System.out.println("---------------------------------------");
System.out.println("출력작업 끝");
}
// 회원을 추가하는 메서드
private void insertMember() {
boolean chk = false; //등록여부 체크
String memId ="";
do {
System.out.println();
System.out.println("추가할 회원정보를 입력하세요");
System.out.print("회원 ID : ");
memId = scan.next();
chk = checkMember(memId);
if(chk==true) {
System.out.println("회원ID가 "+memId+"인 회원은 이미 존재합니다");
System.out.println("다시 입력하세요");
}
} while(chk==true);
System.out.println("회원이름 >> ");
String memName = scan.next();
System.out.println("회원 전화번호 >> ");
String memTel = scan.next();
scan.nextLine(); // 버퍼 비우기
System.out.println("회원주소 >> ");
String memAddr = scan.nextLine();
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemName(memName);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
int cnt = memService.insertMember(mv);
if(cnt>0) {
System.out.println(memId+"회원 추가 작업 성공");
}else {
System.out.println(memId+"회원 추가 작업 실패");
}
}
// 회원 아이디를 이용하여 회원이 존재하는지 알려주는 메소드
// @param memId
// @return true : 회원이 존재함, false : 회원이 존재하지 않음
private boolean checkMember(String memId) {
return memService.checkMember(memId);
}
public static void main(String[] args) {
MemberInfoMain memObj = new MemberInfoMain();
memObj.start();
}
}
Reference
この問題について(MVCモード), 我々は、より多くの情報をここで見つけました https://velog.io/@cheshirehyun/MVC-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol