Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 오라클
- 어윈 사용법
- 한국건설관리시스템
- 환경설정
- GRANT VIEW
- oracle
- Java
- 다형성
- NestedFor
- 인터페이스
- cursor문
- 제네릭
- 추상메서드
- 사용자예외클래스생성
- 예외미루기
- 집합_SET
- 자동차수리시스템
- 컬렉션프레임워크
- 생성자오버로드
- 참조형변수
- 컬렉션 타입
- EnhancedFor
- 객체 비교
- abstract
- exception
- 대덕인재개발원
- 메소드오버로딩
- 정수형타입
- 자바
- 예외처리
Archives
- Today
- Total
거니의 velog
230918_MVC 1 본문
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 |