일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- orcle
- 테이블
- 웹프로그래밍
- UI
- 자바
- 객제지향프로그래밍
- ERWin
- web
- Java
- 웹
- 코딩
- squery
- 프로그래밍
- Oracle
- 객체지향
- 공부를열심히
- jsp
- DB
- 객제지향
- 객체지향프로그래밍
- 프로젝트
- 오라클
- Project
- CSS
- 주말이다..
- sql
- 공부
- javascript
- 데이터베이스
- html
Archives
- Today
- Total
햄찌개
JAVA- MVC 회원관리 예제 본문
MemberMain
package kr.or.ddit.member;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
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;
import kr.or.ddit.util.JDBCUtill;
/*
회원정보를 관리하는 프로그램을 작성하는데
아래의 메뉴를 모두 구현하시오. (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) -- 주소
);
*/
public class MemberMain {
private IMemberService memService;
private Scanner scan;
public MemberMain() {
memService = new MemberServiceImpl();
scan = new Scanner(System.in);
}
/**
* 메뉴를 출력하는 메서드
*/
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 : // 자료 검색
getSearchMember();
break;
case 6 : // 작업 끝
System.out.println("작업을 마칩니다.");
break;
default :
System.out.println("번호를 잘못 입력했습니다. 다시입력하세요");
}
}while(choice!=6);
}
/**
* 회원 정보를 삭제하는 메서드
* (입력받은 회원 ID를 이용하여 삭제한다.)
*/
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= getMember(memId);
if(!chk) {
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.setMem_id(memId);
mv.setMem_name(memName);
mv.setMem_tel(memTel);
mv.setMem_addr(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.displayMemberAll();
for (MemberVO memVO : memList) {
System.out.println(memVO.getMem_id()
+ "\t" + memVO.getMem_name()
+ "\t" + memVO.getMem_tel()
+ "\t\t"+ memVO.getMem_addr());
}
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= getMember(memId);
if(chk) {
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.setMem_id(memId);
mv.setMem_name(memName);
mv.setMem_tel(memTel);
mv.setMem_addr(memAddr);
int cnt = memService.insertMember(mv);
if(cnt>0) {
System.out.println(memId+" 회원 추가 성공...");
}else {
System.out.println(memId+" 회원 추가 실패...");
}
}
/**.
* 회원 ID를 이용하여 회원이 있는지 알려주는 메서드
* @param memId
* @return
*/
private boolean getMember(String memId) {
return memService.getMember(memId);
}
/**
* 회원 정보를 검색하는 메서드
*/
public void getSearchMember() {
/**
* 검색할 회원 ID, 회원이름, 전화번호, 주소를 입력하면
* 검색한 정보만 사용하여 검색하는 기능을 구현하시오.
* 주소는 입력한 값이 포함만 되어도 검색되도록한다.
* 입력을 하지 않을 자료는 엔터키로 다음 입력으로 넘긴다.
*/
scan.nextLine();//입력 버퍼 지우기
System.out.println();
System.out.println("검색할 정보를 입력하세요.");
System.out.print("회원ID >>");
String memId = scan.nextLine().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.setMem_id(memId);
mv.setMem_name(memName);
mv.setMem_tel(memtel);
mv.setMem_addr(memAddr);
//입력한 정보로 검색한 내용을 출력하기
System.out.println();
System.out.println("===================================");
System.out.println("ID\t이름\t전화번호\t\t주소");
System.out.println("===================================");
List<MemberVO> memList = memService.getSearchMember(mv);
for (MemberVO memVO : memList) {
System.out.println(memVO.getMem_id()
+ "\t" + memVO.getMem_name()
+ "\t" + memVO.getMem_tel()
+ "\t\t"+ memVO.getMem_addr());
}
System.out.println("=============================================");
System.out.println("출력 작업 끝 ...");
}
public static void main(String[] args) {
MemberMain memObj = new MemberMain();
memObj.start();
}
}
MemberVO
package kr.or.ddit.member.vo;
/**
* DB 테이블에 있는 컬럼을 기준으로 데이터를 객체화한 클래스이다.
*
* @author PC-17
* <p>
* DB테이블의 '컬럼'이 클래스의 '멤버변수'가 된다. <br>
* DB테이블의 컬럼과 클래스의 멤버변수를 매핑하는 역할을 수행한다. <br>
* </p>
*/
public class MemberVO {
private String mem_id;
private String mem_name;
private String mem_tel;
private String mem_addr;
public String getMem_id() {
return mem_id;
}
public void setMem_id(String mem_id) {
this.mem_id = mem_id;
}
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_name=" + mem_name + ", mem_tel=" + mem_tel + ", mem_addr="
+ mem_addr + "]";
}
}
JDBCUtill
package kr.or.ddit.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC 드라이버를 로딩하고 Connection객체를 생성하는 메서드 제공
*/
public class JDBCUtill {
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("드라이버 로딩 완료 ...");
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로딩 실패 ...");
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521/xe",
"JEON",
"java");
} catch (SQLException e) {
System.out.println("DB 연결 실패...");
return null;
}
}
/**
* 자원 반납하는 메서드
* @param conn
* @param stmt
* @param pstmt
* @param rs
*/
public static void disConnect(Connection conn, Statement stmt, PreparedStatement pstmt, ResultSet rs) {
if(rs!=null)try {rs.close();}catch (SQLException ex) {ex.printStackTrace();}
if(stmt!=null)try {stmt.close();}catch (SQLException ex) {ex.printStackTrace();}
if(pstmt!=null)try {pstmt.close();}catch (SQLException ex) {ex.printStackTrace();}
if(conn!=null)try {conn.close();}catch (SQLException ex) {ex.printStackTrace();}
}
}
IMemberService
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
/**
* 실제 DB와 연결해서 SQL문을 수행하여 결과를 받아 Controll에 전달하는 Service의 interface
* @author PC-17
*
*/
public interface IMemberService {
/**
* MemberVo에 담긴 자료를 DB에 insert하는 메서드
*
* @param mv DB에 insert할 자료가 저장된 MemberVO객체
* @return DB작업이 성공하면 1이상인 값이 반환되고 실패하면 0이 반환된다.
*/
public int insertMember(MemberVO mv);
/**
* 회원 ID를 매개변수로 받아서 그 회원 정보를 삭제하는 메서드
*
* @param memId
* @return 작업성공 :1, 작업실패 : 0
*/
public int deleteMember(String memId);
/**
* 하나의 MemberVO자료를 이용하여 DB를 update하는 메서드
*
* @param mv update할 회원정보가 들어있는 MemberVO객체
* @return 작업성공 :1, 작업실패 :0
*/
public int updateMember(MemberVO mv);
/**
* DB의 mymember테이블의 전체 레코드를 가져와서 List에 담아서 반환하는 메서드
* @return MemberVO객체를 담고있는 List객체
*/
public List<MemberVO> displayMemberAll();
/**
* 주어진 회원 ID가 존재하는지 여부를 알아내는 메서드
* @param memId
* @return 해당회원이 존재하면 true, 없으면 false
*/
public boolean getMember(String memId);
/**
* MemberVO에 담긴 자료를 이용하여 회원을 검색하는 메서드
* @param mv 검색할 자료가 담긴 MemberVO객체
* @return 검색된 결과를 담은 List객체
*/
public List<MemberVO> getSearchMember(MemberVO mv);
}
MemberServiceImpl
package kr.or.ddit.member.service;
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) {
return memDao.insertMember(mv);
}
public void reservation(MemberVO mv) {
//좌석 선택 ...(좌석선택 DAO 호출)
//계좌이체 기능
//사용자한테 메일 발송...
}
@Override
public int deleteMember(String memId) {
return memDao.deleteMember(memId);
}
@Override
public int updateMember(MemberVO mv) {
return memDao.updateMember(mv);
}
@Override
public List<MemberVO> displayMemberAll() {
return memDao.displayMemberAll();
}
@Override
public boolean getMember(String memId) {
return memDao.getMember(memId);
}
@Override
public List<MemberVO> getSearchMember(MemberVO mv) {
return memDao.getSearchMember(mv);
}
}
IMemberDao
package kr.or.ddit.member.dao;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
/**
* 실제 DB와 연결해서 SQL문을 수행하여 결과를 받아 Service에 전달하는 DAO의 interface
*
* @author PC-17
*
*/
public interface IMemberDao {
/**
* MemberVo에 담긴 자료를 DB에 insert하는 메서드
*
* @param mv DB에 insert할 자료가 저장된 MemberVO객체
* @return DB작업이 성공하면 1이상인 값이 반환되고 실패하면 0이 반환된다.
*/
public int insertMember(MemberVO mv);
/**
* 회원 ID를 매개변수로 받아서 그 회원 정보를 삭제하는 메서드
*
* @param memId
* @return 작업성공 :1, 작업실패 : 0
*/
public int deleteMember(String memId);
/**
* 하나의 MemberVO자료를 이용하여 DB를 update하는 메서드
*
* @param mv update할 회원정보가 들어있는 MemberVO객체
* @return 작업성공 :1, 작업실패 :0
*/
public int updateMember(MemberVO mv);
/**
* DB의 mymember테이블의 전체 레코드를 가져와서 List에 담아서 반환하는 메서드
* @return MemberVO객체를 담고있는 List객체
*/
public List<MemberVO> displayMemberAll();
/**
* 주어진 회원 ID가 존재하는지 여부를 알아내는 메서드
* @param memId
* @return 해당회원이 존재하면 true, 없으면 false
*/
public boolean getMember(String memId);
/**
* MemberVO에 담긴 자료를 이용하여 회원을 검색하는 메서드
* @param mv 검색할 자료가 담긴 MemberVO객체
* @return 검색된 결과를 담은 List객체
*/
public List<MemberVO> getSearchMember(MemberVO mv);
}
MemberDaoImpl
package kr.or.ddit.member.dao;
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.JDBCUtill;
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 = JDBCUtill.getConnection();
String sql = "insert into myMember " + " (mem_id,mem_name,mem_tel,mem_addr) " + " values(?,?,?,?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mv.getMem_id());
pstmt.setString(2, mv.getMem_name());
pstmt.setString(3, mv.getMem_tel());
pstmt.setString(4, mv.getMem_addr());
cnt = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtill.disConnect(conn, stmt, pstmt, rs);
}
return cnt;
}
@Override
public int deleteMember(String memId) {
int cnt = 0;
try {
conn = JDBCUtill.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 {
JDBCUtill.disConnect(conn, stmt, pstmt, rs);
}
return cnt;
}
@Override
public int updateMember(MemberVO mv) {
int cnt = 0;
try {
conn = JDBCUtill.getConnection();
String sql = " update mymember set " + " mem_name= ?," + " mem_tel= ?," + " mem_addr= ? "
+ " where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mv.getMem_name());
pstmt.setString(2, mv.getMem_tel());
pstmt.setString(3, mv.getMem_addr());
pstmt.setString(4, mv.getMem_id());
cnt = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtill.disConnect(conn, stmt, pstmt, rs);
}
return cnt;
}
@Override
public List<MemberVO> displayMemberAll() {
List<MemberVO> memList = new ArrayList<MemberVO>();
try {
conn = JDBCUtill.getConnection();
String sql = " select * from mymember ";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
MemberVO mv = new MemberVO();
mv.setMem_id(rs.getString("mem_id"));
mv.setMem_name(rs.getString("mem_name"));
mv.setMem_tel(rs.getString("mem_tel"));
mv.setMem_addr(rs.getString("mem_addr"));
memList.add(mv);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtill.disConnect(conn, stmt, pstmt, rs);
}
return memList;
}
@Override
public boolean getMember(String memId) {
boolean chk = false;
try {
conn = JDBCUtill.getConnection();
String sql = "select count(*) cnt from mymember " + " where mem_id = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memId);
rs = pstmt.executeQuery();
int count = 0;
while (rs.next()) {
count = rs.getInt("cnt");
}
if (count > 0) {
chk = true;
}
} catch (SQLException e) {
e.printStackTrace();
chk = false;
} finally {
JDBCUtill.disConnect(conn, stmt, pstmt, rs);
}
return chk;
}
@Override
public List<MemberVO> getSearchMember(MemberVO mv) {
List<MemberVO> memList = new ArrayList<>();
try {
conn = JDBCUtill.getConnection();
String sql = "select * from mymember where 1=1"; //1=1 사용한 이유 모든 것에 and 붙여서 사용할려고
//쿼리문을 동적으로 그떄그때 바꿔서 사용 => 다이나믹 쿼리
if(mv.getMem_id()!=null && !mv.getMem_id().equals("")) {
sql +=" and mem_id = ? ";
}
if(mv.getMem_name()!=null && !mv.getMem_name().equals("")) {
sql +=" and mem_name = ? ";
}
if(mv.getMem_tel()!=null && !mv.getMem_tel().equals("")) {
sql +=" and mem_tel = ? ";
}
if(mv.getMem_addr()!=null && !mv.getMem_addr().equals("")) {
sql +=" and mem_addr like '%' || ? || '%' ";
}
pstmt = conn.prepareStatement(sql);
int index =1;
if(mv.getMem_id()!=null && !mv.getMem_id().equals("")) {
pstmt.setString(index++, mv.getMem_id());
}
if(mv.getMem_name()!=null && !mv.getMem_name().equals("")) {
pstmt.setString(index++, mv.getMem_name());
}
if(mv.getMem_tel()!=null && !mv.getMem_tel().equals("")) {
pstmt.setString(index++, mv.getMem_tel());
}
if(mv.getMem_addr()!=null && !mv.getMem_addr().equals("")) {
pstmt.setString(index++, mv.getMem_addr());
}
rs = pstmt.executeQuery();
while (rs.next()) {
MemberVO mv2 = new MemberVO();
mv2.setMem_id(rs.getString("mem_id"));
mv2.setMem_name(rs.getString("mem_name"));
mv2.setMem_tel(rs.getString("mem_tel"));
mv2.setMem_addr(rs.getString("mem_addr"));
memList.add(mv2);
}
}catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtill.disConnect(conn, stmt, pstmt, rs);
}
return memList;
}
}
'고급 JAVA' 카테고리의 다른 글
JAVA - Log4j (0) | 2020.10.08 |
---|---|
JAVA - Singleton (0) | 2020.10.08 |
JAVA - MVC 및 싱글턴패턴 (0) | 2020.10.05 |
JAVA-JDBC - 외부 properties (0) | 2020.09.29 |
JAVA -JDBC - JDBC를 이용한 데이터베이스 처리 순서 (0) | 2020.09.29 |