회원정보를 관리하는 프로그램을 작성하는데
아래의 메뉴를 모두 구현하시오. (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)
);
T01MemberMain
private IMemberService memService;
private Scanner scan=new Scanner(System.in);
T01MemberMain
//생성자
public T01MemberMain(){
memService = new MemberServiceImpl();
}
displayMenu
/**
* 메뉴를 출력하는 메서드
*/
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("원하는 작업 선택 >> ");
}
start
/**
* 프로그램 시작메서드
*/
public void start(){
int choice;
do{
displayMenu(); //메뉴 출력
choice = scan.nextInt(); // 메뉴번호 입력받기
switch(choice){
case 1 : // 자료 입력
insertMember();
break;
case 2 : // 자료 삭제
delectMember();
break;
case 3 : // 자료 수정
updateMember();
break;
case 4 : // 전체 자료 출력
displayMember();
break;
case 5 : // 자료 검색
searchMember();
break;
case 6 : // 작업 끝
System.out.println("작업을 마칩니다.");
break;
default :
System.out.println("번호를 잘못 입력했습니다. 다시입력하세요");
}
}while(choice!=6); //5 반복종료
}
searchMember
/**
* 회원정보 검색을 위한 메서드
*/
private void searchMember() {
/*
* 검색할 회원ID, 회원이름, 전화번호, 주소 등을 입력하면
* 입력한 정보만 사용하여 검색하는 기능을 구현하시오.
* 주소는 입력한 값이 포함만 되어도 검색 가능하도록 한다.
* 입력하지 않을 데이터는 엔터키로 다음 입력으로 넘긴다.
*/
scan.nextLine(); //버퍼 비우기
System.out.println();
System.out.println("검색할 회원정보를 입력하세요");
System.out.println("회원 ID>>");
String memId = scan.nextLine().trim();
System.out.println("회원 이름>>");
String memName = scan.nextLine().trim();
System.out.println("회원 전화번호>>");
String memTel = scan.nextLine().trim();
System.out.println("회원 주소>>");
String memAddr = scan.nextLine().trim();
MemberVO paramMv = new MemberVO(memId, memName, memTel, memAddr);
List<MemberVO> memList = memService.searchMember(paramMv);
System.out.println();
System.out.println("--------------------------");
System.out.println("ID\t생성일\t이 름\t전화번호 \t\t 주 소");
System.out.println("--------------------------");
if(memList.size() == 0) {
System.out.println("존재하지 않습니다.");
}else {
for (MemberVO mv : memList) {
System.out.println(mv.getMemId()+"\t"+ mv.getRegDT() +"\t"+ mv.getMemName()
+"\t"+ mv.getMemTel()+"\t"+ mv.getMemAddr());
}
}
}
displayMember
/**
* 회원정보를 모두 출력하기 위한 메서드
*/
private void displayMember() {
System.out.println();
System.out.println("--------------------------");
System.out.println("ID\t생성일\t이 름\t전화번호 \t\t 주 소");
System.out.println("--------------------------");
List<MemberVO> memList = memService.displayMember();
if(memList.size() == 0) {
System.out.println("존재하지 않습니다.");
}else {
for (MemberVO mv : memList) {
System.out.println(mv.getMemTel()+ mv.getRegDT() + mv.getMemName()
+ mv.getMemTel()+ mv.getMemAddr());
}
}
}
delectMember
/**
* 회원정보를 삭제하기 위한 메서드
*/
private void delectMember() {
boolean isExist = false;
System.out.println();
System.out.println("삭제할 회원정보를 입력하세요.");
System.out.println("회원 ID>>");
String memId = scan.next();
int cnt = memService.removeMember(memId);
if(cnt > 0) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}
updateMember
/**
* 회원정보를 수정하기 위한 메서드
*/
private void updateMember() {
//중복체크
boolean isExist = false;
System.out.println();
System.out.println("수정할 회원정보를 입력하세요.");
System.out.println("회원 ID>>");
String memId = scan.next();
//
isExist = checkMember(memId);
if(!isExist) { //false
System.out.println(memId + "인 회원이 존재하지 않습니다.");
System.out.println("다시 입력해 주세요.");
return;
}
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(memId, memName, memTel, memAddr);
int cnt = memService.modifyMember(mv);
if(cnt > 0) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}
insertMember
/*
* 회원정보를 등록하기 위한 메서드
*/
private void insertMember() {
//중복체크
boolean isExist = false;
System.out.println();
System.out.println("추가할 회원정보를 입력하세요.");
System.out.println("회원 ID>>");
String memId = scan.next();
//
isExist = checkMember(memId);
if(isExist) { //true
System.out.println(memId + "인 회원이 이미 존재합니다..");
System.out.println("다시 입력해 주세요.");
return;
}
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(memId, memName, memTel, memAddr);
int cnt = memService.registMember(mv);
if(cnt > 0) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}
checkMember(String memId)
/**
* 회원정보가 존재하는지 체크하기 위한 메서드
* @param memId 체크할 회원아이디
* @return
*/
private boolean checkMember(String memId) {
return memService.checkMember(memId);
}
main(String[] args)
public static void main(String[] args) {
T01MemberMain memObj = new T01MemberMain();
memObj.start();
}
IMemberService(인터페이스)
registMember(MemberVO mv)
/**
* MemberVO 객체에 담긴 데이터를 DB등록하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1 실패하면 0 반환됨
*/
public int registMember(MemberVO mv);
modifyMember(MemberVO mv)
/**
* MemberVO 객체에 담긴 데이터를 DB수정하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1
* 실패하면 0 반환됨
*/
public int modifyMember(MemberVO mv);
checkMember(String memId)
/**
* 회원정보가 존재하는지 체크하기 위한 메서드
* @param memId 존재여부 체크할 회원ID
* @return 회원정보가 존재하면 true,
* 존재하지 않으면 false 반환
*/
public boolean checkMember(String memId);
removeMember(String memId)
/**
* 회원정보를 삭제하기 위한 메서드
* @param memId 삭제할 회원 ID
* @return 회원정보 삭제 성공하면 1
* 실패하면 0반환
*/
public int removeMember(String memId);
List<MemberVO> displayMember()
/**
* 모든 회원정보를 가져오기 위한 메서드
* @return 모든 회원정보를 담은 List 객체
*/
public List<MemberVO> displayMember();
List<MemberVO> searchMember(MemberVO mv)
/**
* 회원정보를 검색 위한 메서드
* @param mv 검색할 회원정보를 담은 MemberVO객체
* @return 검색된 회원정보를 담은 List 객체
*/
public List<MemberVO> searchMember(MemberVO mv);
MemberServiceImpl implements IMemberService
MemberServiceImpl
private IMemberDao memDao;
public MemberServiceImpl(){
memDao = new MemberDaoImplForJDBC();
}
registMember(MemberVO mv)
@Override
public int registMember(MemberVO mv) {
int cnt = memDao.intsertMember(mv);
if(cnt > 0) {
//정상회원들록 알림 메일 발송
}
return cnt;
}
modifyMember(MemberVO mv)
@Override
public int modifyMember(MemberVO mv) {
int cnt = memDao.updateMember(mv);
return cnt;
}
checkMember(String memId)
@Override
public boolean checkMember(String memId) {
return memDao.checkMember(memId);
}
removeMember(String memId)
@Override
public int removeMember(String memId) {
int cnt = memDao.deleteMember(memId);
return cnt;
}
List<MemberVO> displayMember()
@Override
public List<MemberVO> displayMember() {
return memDao.getAllMember();
}
List<MemberVO> searchMember(MemberVO mv)
@Override
public List<MemberVO> searchMember(MemberVO mv) {
return memDao.searchMember(mv);
}
interface IMemberDao
intsertMember(MemberVO mv)
/**
* MemberVO 객체에 담긴 데이터를 DB등록하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1 실패하면 0 반환됨
*/
public int intsertMember(MemberVO mv);
updateMember(MemberVO mv)
/**
* MemberVO 객체에 담긴 데이터를 DB수정하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1
* 실패하면 0 반환됨
*/
public int updateMember(MemberVO mv);
checkMember(String memId)
/**
* 회원정보가 존재하는지 체크하기 위한 메서드
* @param memId 존재여부 체크할 회원ID
* @return 회원정보가 존재하면 true,
* 존재하지 않으면 false 반환
*/
public boolean checkMember(String memId);
deleteMember(String memId)
/**
* 회원정보를 삭제하기 위한 메서드
* @param memId 삭제할 회원 ID
* @return 회원정보 삭제 성공하면 1
* 실패하면 0반환
*/
public int deleteMember(String memId);
List<MemberVO> getAllMember()
/**
* 모든 회원정보를 가져오기 위한 메서드
* @return 모든 회원정보를 담은 List 객체
*/
public List<MemberVO> getAllMember();
List<MemberVO> searchMember(MemberVO mv)
/**
* 회원정보를 검색 위한 메서드
* @param mv 검색할 회원정보를 담은 MemberVO객체
* @return 검색된 회원정보를 담은 List 객체
*/
public List<MemberVO> searchMember(MemberVO mv);
MemberDaoImplForJDBC implements IMemberDao
private Connection conn;
private Statement stmt;
private PreparedStatement pstmt;
private ResultSet rs;
intsertMember(MemberVO mv)
@Override
public int intsertMember(MemberVO mv) {
int cnt = 0;
try {
//오라클 접속
conn = JDBCUtil3.getConnection();
String sql = "insert into mymember"
+ " (MEM_ID,MEM_NAME,MEM_TEL,MEM_ADDR)\r\n" +
" values (?,?,?,?)";
pstmt = conn.prepareStatement(sql);
// pstmt.setNString(?위치 번호, 값);
pstmt.setNString(1, mv.getMemId());
pstmt.setNString(2, mv.getMemName());
pstmt.setNString(3, mv.getMemTel());
pstmt.setNString(4, mv.getMemAddr());
//executeQuery() : select (조회)
//executeUpdate() : 리턴타입 : int 0이면 executeUpdate 안되있고 0 보다 크면 executeUpdate 됨
cnt = pstmt.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
//자원반납
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return cnt;
}
updateMember(MemberVO mv)
@Override
public int updateMember(MemberVO mv) {
int cnt = 0;
try {
//오라클 접속
conn = JDBCUtil3.getConnection();
String sql = "update mymember\r\n" +
" set\r\n" +
" mem_name = ?\r\n" +
" , mem_tel = ?\r\n" +
" , mem_addr = ?\r\n" +
" where\r\n" +
" mem_id = ?";
pstmt = conn.prepareStatement(sql);
// pstmt.setNString(?위치 번호, 값);
pstmt.setNString(1, mv.getMemName());
pstmt.setNString(2, mv.getMemTel());
pstmt.setNString(3, mv.getMemAddr());
pstmt.setNString(4, mv.getMemId());
//executeQuery() : select (조회)
//executeUpdate() : 리턴타입 : int 0이면 executeUpdate 안되있고 0 보다 크면 executeUpdate 됨
cnt = pstmt.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
//자원반납
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return cnt;
}
checkMember(String memId)
@Override
public boolean checkMember(String memId) {
boolean isExist = false;
try {
conn = JDBCUtil3.getConnection();
String sql = "select count(*) cnt \r\n" +
" from mymember\r\n" +
" where\r\n" +
" mem_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memId);
rs = pstmt.executeQuery();
while(rs.next()) {
int cnt = rs.getInt("cnt");
if(cnt > 0) {
isExist = true; // 이미존재함
}
}
}catch(SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return isExist;
}
deleteMember(String memId)
@Override
public int deleteMember(String memId) {
int cnt = 0;
try {
conn = JDBCUtil3.getConnection();
String sql = "delete from mymember where mem_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setNString(1, memId);
cnt = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return cnt;
}
List<MemberVO> getAllMember()
@Override
public List<MemberVO> getAllMember() {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
//conn 먼저 해야 createStatement() 만들수 있음
conn = JDBCUtil3.getConnection();
String sql = "select * from mymember";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
String memId = rs.getNString("mem_Id");
String memName = rs.getNString("mem_name");
String memTel = rs.getNString("mem_tel");
String memAddr = rs.getNString("mem_addr");
//LocalDateTim
LocalDate regDt = rs.getTimestamp("reg_dt")
.toLocalDateTime().toLocalDate();
//MemberVo 담는 과정
//객체생성
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemName(memName);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
mv.setRegDT(regDt);
//memList에 정보 추가
memList.add(mv);
}
}catch (SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return memList;
}
List<MemberVO> searchMember(MemberVO mv)
@Override
public List<MemberVO> searchMember(MemberVO mv) {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
conn = JDBCUtil3.getConnection();
String sql = "select * from mymember\r\n" +
" where \r\n" +
" 1=1 ";
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);
int parameterIndex =1;
//위에
if(mv.getMemId() != null && !mv.getMemId().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemId());
}
if(mv.getMemName() != null && !mv.getMemName().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemName());
}
if(mv.getMemTel() != null && !mv.getMemTel().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemTel());
}
if(mv.getMemAddr() != null && !mv.getMemAddr().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemAddr());
}
rs = pstmt.executeQuery();
while (rs.next()) {
String memId = rs.getNString("mem_Id");
String memName = rs.getNString("mem_name");
String memTel = rs.getNString("mem_tel");
String memAddr = rs.getNString("mem_addr");
//LocalDateTime
LocalDate regDt = rs.getTimestamp("reg_dt")
.toLocalDateTime().toLocalDate();
//MemberVo 담는 과정
//객체생성
MemberVO mv2 = new MemberVO();
mv2.setMemId(memId);
mv2.setMemName(memName);
mv2.setMemTel(memTel);
mv2.setMemAddr(memAddr);
mv2.setRegDT(regDt);
//memList에 정보 추가
memList.add(mv2);
}
} catch (SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return memList;
}
}
MemberVO
package kr.or.ddit.DAO;
import java.time.LocalDate;
/*
// DB 테이블에 잇는 컬럼명을 기준으로 데이터를 객체화 하기 위한 클래스
* <p>
* DB테이블의 컬럼과 클래스의 멤버변수를 매핑하는 역할을 수행한다.
* </p>
*/
public class MemberVO {
private String memId;
private String memName;
private String memTel;
private String memAddr;
private LocalDate regDT;
public MemberVO(String memId, String memName, String memTel, String memAddr) {
super();
this.memId = memId;
this.memName = memName;
this.memTel = memTel;
this.memAddr = memAddr;
}
public MemberVO() {
}
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;
}
public LocalDate getRegDT() {
return regDT;
}
public void setRegDT(LocalDate regDT) {
this.regDT = regDT;
}
@Override
public String toString() {
return "MemberVO [memId=" + memId + ", memName=" + memName + ", memTel=" + memTel + ", memAddr=" + memAddr
+ ", regDT=" + regDT + "]";
}
}
원본
T01MemberMain
더보기
package kr.or.ddit.member;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Scanner;
import kr.or.ddit.DAO.IMemberDao;
import kr.or.ddit.DAO.MemberDaoImplForJDBC;
import kr.or.ddit.DAO.MemberVO;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImpl;
import kr.or.ddit.utill.JDBCUtil3;
/*
회원정보를 관리하는 프로그램을 작성하는데
아래의 메뉴를 모두 구현하시오. (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 T01MemberMain {
private IMemberService memService;
private Scanner scan=new Scanner(System.in);
//생성자
public T01MemberMain(){
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 : // 자료 삭제
delectMember();
break;
case 3 : // 자료 수정
updateMember();
break;
case 4 : // 전체 자료 출력
displayMember();
break;
case 5 : // 자료 검색
searchMember();
break;
case 6 : // 작업 끝
System.out.println("작업을 마칩니다.");
break;
default :
System.out.println("번호를 잘못 입력했습니다. 다시입력하세요");
}
}while(choice!=6); //5 반복종료
}
/**
* 회원정보 검색을 위한 메서드
*/
private void searchMember() {
/*
* 검색할 회원ID, 회원이름, 전화번호, 주소 등을 입력하면
* 입력한 정보만 사용하여 검색하는 기능을 구현하시오.
* 주소는 입력한 값이 포함만 되어도 검색 가능하도록 한다.
* 입력하지 않을 데이터는 엔터키로 다음 입력으로 넘긴다.
*/
scan.nextLine(); //버퍼 비우기
System.out.println();
System.out.println("검색할 회원정보를 입력하세요");
System.out.println("회원 ID>>");
String memId = scan.nextLine().trim();
System.out.println("회원 이름>>");
String memName = scan.nextLine().trim();
System.out.println("회원 전화번호>>");
String memTel = scan.nextLine().trim();
System.out.println("회원 주소>>");
String memAddr = scan.nextLine().trim();
MemberVO paramMv = new MemberVO(memId, memName, memTel, memAddr);
List<MemberVO> memList = memService.searchMember(paramMv);
System.out.println();
System.out.println("--------------------------");
System.out.println("ID\t생성일\t이 름\t전화번호 \t\t 주 소");
System.out.println("--------------------------");
if(memList.size() == 0) {
System.out.println("존재하지 않습니다.");
}else {
for (MemberVO mv : memList) {
System.out.println(mv.getMemId()+"\t"+ mv.getRegDT() +"\t"+ mv.getMemName()
+"\t"+ mv.getMemTel()+"\t"+ mv.getMemAddr());
}
}
}
/**
* 회원정보를 모두 출력하기 위한 메서드
*/
private void displayMember() {
System.out.println();
System.out.println("--------------------------");
System.out.println("ID\t생성일\t이 름\t전화번호 \t\t 주 소");
System.out.println("--------------------------");
List<MemberVO> memList = memService.displayMember();
if(memList.size() == 0) {
System.out.println("존재하지 않습니다.");
}else {
for (MemberVO mv : memList) {
System.out.println(mv.getMemTel()+ mv.getRegDT() + mv.getMemName()
+ mv.getMemTel()+ mv.getMemAddr());
}
}
}
/**
* 회원정보를 삭제하기 위한 메서드
*/
private void delectMember() {
boolean isExist = false;
System.out.println();
System.out.println("삭제할 회원정보를 입력하세요.");
System.out.println("회원 ID>>");
String memId = scan.next();
int cnt = memService.removeMember(memId);
if(cnt > 0) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}
/**
* 회원정보를 수정하기 위한 메서드
*/
private void updateMember() {
//중복체크
boolean isExist = false;
System.out.println();
System.out.println("수정할 회원정보를 입력하세요.");
System.out.println("회원 ID>>");
String memId = scan.next();
//
isExist = checkMember(memId);
if(!isExist) { //false
System.out.println(memId + "인 회원이 존재하지 않습니다.");
System.out.println("다시 입력해 주세요.");
return;
}
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(memId, memName, memTel, memAddr);
int cnt = memService.modifyMember(mv);
if(cnt > 0) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}
/*
* 회원정보를 등록하기 위한 메서드
*/
private void insertMember() {
//중복체크
boolean isExist = false;
System.out.println();
System.out.println("추가할 회원정보를 입력하세요.");
System.out.println("회원 ID>>");
String memId = scan.next();
//
isExist = checkMember(memId);
if(isExist) { //true
System.out.println(memId + "인 회원이 이미 존재합니다..");
System.out.println("다시 입력해 주세요.");
return;
}
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(memId, memName, memTel, memAddr);
int cnt = memService.registMember(mv);
if(cnt > 0) {
System.out.println("성공");
}else {
System.out.println("실패");
}
}
/**
* 회원정보가 존재하는지 체크하기 위한 메서드
* @param memId 체크할 회원아이디
* @return
*/
private boolean checkMember(String memId) {
return memService.checkMember(memId);
}
public static void main(String[] args) {
T01MemberMain memObj = new T01MemberMain();
memObj.start();
}
}
interface IMemberService
더보기
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.DAO.MemberVO;
public interface IMemberService {
/**
* MemberVO 객체에 담긴 데이터를 DB등록하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1 실패하면 0 반환됨
*/
public int registMember(MemberVO mv);
/**
* MemberVO 객체에 담긴 데이터를 DB수정하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1
* 실패하면 0 반환됨
*/
public int modifyMember(MemberVO mv);
/**
* 회원정보가 존재하는지 체크하기 위한 메서드
* @param memId 존재여부 체크할 회원ID
* @return 회원정보가 존재하면 true,
* 존재하지 않으면 false 반환
*/
public boolean checkMember(String memId);
/**
* 회원정보를 삭제하기 위한 메서드
* @param memId 삭제할 회원 ID
* @return 회원정보 삭제 성공하면 1
* 실패하면 0반환
*/
public int removeMember(String memId);
/**
* 모든 회원정보를 가져오기 위한 메서드
* @return 모든 회원정보를 담은 List 객체
*/
public List<MemberVO> displayMember();
/**
* 회원정보를 검색 위한 메서드
* @param mv 검색할 회원정보를 담은 MemberVO객체
* @return 검색된 회원정보를 담은 List 객체
*/
public List<MemberVO> searchMember(MemberVO mv);
}
MemberServiceImpl implements IMemberService
더보기
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.DAO.IMemberDao;
import kr.or.ddit.DAO.MemberDaoImplForJDBC;
import kr.or.ddit.DAO.MemberVO;
public class MemberServiceImpl implements IMemberService {
private IMemberDao memDao;
public MemberServiceImpl(){
memDao = new MemberDaoImplForJDBC();
}
@Override
public int registMember(MemberVO mv) {
int cnt = memDao.intsertMember(mv);
if(cnt > 0) {
//정상회원들록 알림 메일 발송
}
return cnt;
}
@Override
public int modifyMember(MemberVO mv) {
int cnt = memDao.updateMember(mv);
return cnt;
}
@Override
public boolean checkMember(String memId) {
return memDao.checkMember(memId);
}
@Override
public int removeMember(String memId) {
int cnt = memDao.deleteMember(memId);
return cnt;
}
@Override
public List<MemberVO> displayMember() {
return memDao.getAllMember();
}
@Override
public List<MemberVO> searchMember(MemberVO mv) {
return memDao.searchMember(mv);
}
}
interface IMemberDao
더보기
package kr.or.ddit.DAO;
import java.util.List;
/**
* 실제 DB와 연결해서 SQL문을 수행하여 결과를 생성 후
* Service에 전달하는 DAO 인터페이스
*/
public interface IMemberDao {
/**
* MemberVO 객체에 담긴 데이터를 DB등록하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1 실패하면 0 반환됨
*/
public int intsertMember(MemberVO mv);
/**
* MemberVO 객체에 담긴 데이터를 DB수정하기 위한 메서드
* @param mv 등록할 회원정보를 담은 MemberVO객체
* @return 회원등록 작업이 성공하면 1
* 실패하면 0 반환됨
*/
public int updateMember(MemberVO mv);
/**
* 회원정보가 존재하는지 체크하기 위한 메서드
* @param memId 존재여부 체크할 회원ID
* @return 회원정보가 존재하면 true,
* 존재하지 않으면 false 반환
*/
public boolean checkMember(String memId);
/**
* 회원정보를 삭제하기 위한 메서드
* @param memId 삭제할 회원 ID
* @return 회원정보 삭제 성공하면 1
* 실패하면 0반환
*/
public int deleteMember(String memId);
/**
* 모든 회원정보를 가져오기 위한 메서드
* @return 모든 회원정보를 담은 List 객체
*/
public List<MemberVO> getAllMember();
/**
* 회원정보를 검색 위한 메서드
* @param mv 검색할 회원정보를 담은 MemberVO객체
* @return 검색된 회원정보를 담은 List 객체
*/
public List<MemberVO> searchMember(MemberVO mv);
}
MemberDaoImplForJDBC implements IMemberDao
package kr.or.ddit.DAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import kr.or.ddit.utill.JDBCUtil3;
public class MemberDaoImplForJDBC implements IMemberDao {
private Connection conn;
private Statement stmt;
private PreparedStatement pstmt;
private ResultSet rs;
@Override
public int intsertMember(MemberVO mv) {
int cnt = 0;
try {
//오라클 접속
conn = JDBCUtil3.getConnection();
String sql = "insert into mymember"
+ " (MEM_ID,MEM_NAME,MEM_TEL,MEM_ADDR)\r\n" +
" values (?,?,?,?)";
pstmt = conn.prepareStatement(sql);
// pstmt.setNString(?위치 번호, 값);
pstmt.setNString(1, mv.getMemId());
pstmt.setNString(2, mv.getMemName());
pstmt.setNString(3, mv.getMemTel());
pstmt.setNString(4, mv.getMemAddr());
//executeQuery() : select (조회)
//executeUpdate() : 리턴타입 : int 0이면 executeUpdate 안되있고 0 보다 크면 executeUpdate 됨
cnt = pstmt.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
//자원반납
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return cnt;
}
@Override
public int updateMember(MemberVO mv) {
int cnt = 0;
try {
//오라클 접속
conn = JDBCUtil3.getConnection();
String sql = "update mymember\r\n" +
" set\r\n" +
" mem_name = ?\r\n" +
" , mem_tel = ?\r\n" +
" , mem_addr = ?\r\n" +
" where\r\n" +
" mem_id = ?";
pstmt = conn.prepareStatement(sql);
// pstmt.setNString(?위치 번호, 값);
pstmt.setNString(1, mv.getMemName());
pstmt.setNString(2, mv.getMemTel());
pstmt.setNString(3, mv.getMemAddr());
pstmt.setNString(4, mv.getMemId());
//executeQuery() : select (조회)
//executeUpdate() : 리턴타입 : int 0이면 executeUpdate 안되있고 0 보다 크면 executeUpdate 됨
cnt = pstmt.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
//자원반납
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return cnt;
}
@Override
public boolean checkMember(String memId) {
boolean isExist = false;
try {
conn = JDBCUtil3.getConnection();
String sql = "select count(*) cnt \r\n" +
" from mymember\r\n" +
" where\r\n" +
" mem_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memId);
rs = pstmt.executeQuery();
while(rs.next()) {
int cnt = rs.getInt("cnt");
if(cnt > 0) {
isExist = true; // 이미존재함
}
}
}catch(SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return isExist;
}
@Override
public int deleteMember(String memId) {
int cnt = 0;
try {
conn = JDBCUtil3.getConnection();
String sql = "delete from mymember where mem_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setNString(1, memId);
cnt = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return cnt;
}
@Override
public List<MemberVO> getAllMember() {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
//conn 먼저 해야 createStatement() 만들수 있음
conn = JDBCUtil3.getConnection();
String sql = "select * from mymember";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
String memId = rs.getNString("mem_Id");
String memName = rs.getNString("mem_name");
String memTel = rs.getNString("mem_tel");
String memAddr = rs.getNString("mem_addr");
//LocalDateTim
LocalDate regDt = rs.getTimestamp("reg_dt")
.toLocalDateTime().toLocalDate();
//MemberVo 담는 과정
//객체생성
MemberVO mv = new MemberVO();
mv.setMemId(memId);
mv.setMemName(memName);
mv.setMemTel(memTel);
mv.setMemAddr(memAddr);
mv.setRegDT(regDt);
//memList에 정보 추가
memList.add(mv);
}
}catch (SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return memList;
}
@Override
public List<MemberVO> searchMember(MemberVO mv) {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
conn = JDBCUtil3.getConnection();
String sql = "select * from mymember\r\n" +
" where \r\n" +
" 1=1 ";
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);
int parameterIndex =1;
//위에
if(mv.getMemId() != null && !mv.getMemId().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemId());
}
if(mv.getMemName() != null && !mv.getMemName().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemName());
}
if(mv.getMemTel() != null && !mv.getMemTel().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemTel());
}
if(mv.getMemAddr() != null && !mv.getMemAddr().equals("")) {
pstmt.setString(parameterIndex++, mv.getMemAddr());
}
rs = pstmt.executeQuery();
while (rs.next()) {
String memId = rs.getNString("mem_Id");
String memName = rs.getNString("mem_name");
String memTel = rs.getNString("mem_tel");
String memAddr = rs.getNString("mem_addr");
//LocalDateTime
LocalDate regDt = rs.getTimestamp("reg_dt")
.toLocalDateTime().toLocalDate();
//MemberVo 담는 과정
//객체생성
MemberVO mv2 = new MemberVO();
mv2.setMemId(memId);
mv2.setMemName(memName);
mv2.setMemTel(memTel);
mv2.setMemAddr(memAddr);
mv2.setRegDT(regDt);
//memList에 정보 추가
memList.add(mv2);
}
} catch (SQLException ex) {
ex.printStackTrace();
}finally {
JDBCUtil3.close(conn, pstmt, stmt, rs);
}
return memList;
}
}
MemberVO
package kr.or.ddit.DAO;
import java.time.LocalDate;
/*
// DB 테이블에 잇는 컬럼명을 기준으로 데이터를 객체화 하기 위한 클래스
* <p>
* DB테이블의 컬럼과 클래스의 멤버변수를 매핑하는 역할을 수행한다.
* </p>
*/
public class MemberVO {
private String memId;
private String memName;
private String memTel;
private String memAddr;
private LocalDate regDT;
public MemberVO(String memId, String memName, String memTel, String memAddr) {
super();
this.memId = memId;
this.memName = memName;
this.memTel = memTel;
this.memAddr = memAddr;
}
public MemberVO() {
}
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;
}
public LocalDate getRegDT() {
return regDT;
}
public void setRegDT(LocalDate regDT) {
this.regDT = regDT;
}
@Override
public String toString() {
return "MemberVO [memId=" + memId + ", memName=" + memName + ", memTel=" + memTel + ", memAddr=" + memAddr
+ ", regDT=" + regDT + "]";
}
}
JDBCUtil3
더보기
package kr.or.ddit.utill;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.ResourceBundle;
/**
* db.properties파일의 내용으로 DB정보를 설정하는 방법
* @author PC-15
*
*/
public class JDBCUtil3 {
static ResourceBundle bundle;
static {
try {
bundle= ResourceBundle.getBundle("db");
//옵션(드라이버 빌드패스 설정여부 확인용)
Class.forName(bundle.getString("driver"));
//한번만 호출하면되서 static 블록에서 넣어줌 매번 넣을 필요없음
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(
bundle.getString("url"),
bundle.getString("username"),
bundle.getString("password"));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public static void close(Connection conn,
PreparedStatement pstmt,
Statement stmt,
ResultSet rs) {
//자원반납
if(rs != null) try {rs.close();} catch(SQLException ex) {}
if(pstmt != null) try {pstmt.close();} catch(SQLException ex) {}
if(stmt != null) try {stmt.close();} catch(SQLException ex) {}
if(conn != null) try {conn.close();} catch(SQLException ex) {}
}
}
'JAVA > 수업' 카테고리의 다른 글
2024-03-25 (0) | 2024.03.25 |
---|---|
T01MemberInfoTest (JDBC) (1) | 2024.02.05 |
T07FileWriterTest (InputStreamReader) (1) | 2024.02.03 |
T06FileStreamTest 파일저장용 스트림 (0) | 2024.02.03 |
T05FileStreamTest (0) | 2024.02.03 |