DTO DAO에 대한 기본 개념은 아래 링크 참조
아래와 같은 구조 및 값을 갖는 sqldb2 데이터베이스의 student 테이블에 접근하여
출력/삽입/수정/삭제 연산을 수행하기 위한 예제 구현
StudentDTO.java : 데이터 저장
StudentDAO.java : 생성자에서 DB 연결 + select, insert, update, delete 기능 구현
StudentSelect.java : 데이터 출력 (select)
StudentInsert.java : 데이터 삽입 (insert)
StudentUpdate.java : 데이터 수정 (update)
StudentDelete.java : 데이터 삭제 (delete)
StudentMain : switch 문 사용해 메뉴 처리
StudentDTO.java : 데이터 저장
public class StudentDTO {
private String stdNo;
private String stdName;
private int stdYear;
private String stdAddress;
private String stdBirthDay;
private String dptNo;
public StudentDTO(String stdNo, String stdName, int stdYear, String stdAddress, String stdBirthDay, String dptNo) {
this.stdNo = stdNo;
this.stdName = stdName;
this.stdYear = stdYear;
this.stdAddress = stdAddress;
this.stdBirthDay = stdBirthDay;
this.dptNo = dptNo;
}
// Setters / Getters
public String getStdNo() {
return stdNo;
}
public void setStdNo(String stdNo) {
this.stdNo = stdNo;
}
public String getStdName() {
return stdName;
}
public void setStdName(String stdName) {
this.stdName = stdName;
}
public int getStdYear() {
return stdYear;
}
public void setStdYear(int stdYear) {
this.stdYear = stdYear;
}
public String getStdAddress() {
return stdAddress;
}
public void setStdAddress(String stdAddress) {
this.stdAddress = stdAddress;
}
public String getStdBirthDay() {
return stdBirthDay;
}
public void setStdBirthDay(String stdBirthDay) {
this.stdBirthDay = stdBirthDay;
}
public String getDptNo() {
return dptNo;
}
public void setDptNo(String dptNo) {
this.dptNo = dptNo;
}
}
StudentDAO.java : 생성자에서 DB 연결
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
public class StudentDAO {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public StudentDAO() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/sqldb2?serverTimezone=UTC";
String user = "root";
String pwd = "1234";
con = DriverManager.getConnection(url, user, pwd);
} catch (Exception e) {
System.out.println("오류 발생");
e.printStackTrace();
}
}
public void selectStudent() {
try {
String sql = "select * from student order by stdNo";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery(sql);
while(rs.next()) {
String stdNo = rs.getString(1);
String stdName = rs.getString(2);
int stdYear = rs.getInt(3);
String stdAddress = rs.getString(4);
Date stdBirthday = rs.getDate(5);
String dptNo = rs.getString(6);
System.out.format("%-10s\t %-10s\t %-4d %-20s %13s %5s\n",
stdNo, stdName, stdYear, stdAddress, stdBirthday, dptNo);
}
} catch (Exception e) {
System.out.println("오류 발생");
e.printStackTrace();
}
}
public void insertStudent(StudentDTO dto) {
try {
String sql = "insert into student values(?, ?, ?, ?, ?, ?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, dto.getStdNo());
pstmt.setString(2, dto.getStdName());
pstmt.setInt(3, dto.getStdYear());
pstmt.setString(4, dto.getStdAddress());
pstmt.setString(5, dto.getStdBirthDay());
pstmt.setString(6, dto.getDptNo());
pstmt.executeUpdate();
} catch (Exception e) {
System.out.println("오류 발생");
e.printStackTrace();
}
}
public void updateStudent(StudentDTO dto) {
try {
String sql = "update student set stdName=?, stdYear=?, stdAddress=?, stdBirthDay=?, dptNo=? where stdNo=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, dto.getStdName());
pstmt.setInt(2, dto.getStdYear());
pstmt.setString(3, dto.getStdAddress());
pstmt.setString(4, dto.getStdBirthDay());
pstmt.setString(5, dto.getDptNo());
pstmt.setString(6, dto.getStdNo());
int result = pstmt.executeUpdate();
if (result > 0) {
System.out.println("데이터 수정 성공!");
}
} catch (Exception e) {
System.out.println("오류 발생!");
e.printStackTrace();
}
}
public void deleteStudent(String stdNo) {
try {
String sql = "delete from student where stdNo=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, stdNo);
int result = pstmt.executeUpdate();
if (result > 0) {
System.out.println("데이터 삭제 성공!");
}
} catch (Exception e) {
System.out.println("오류 발생!");
e.printStackTrace();
}
}
}
StudentSelect.java : 데이터 출력 (select)
import java.util.Date;
import java.util.Scanner;
public class StudentSelect{
public void select() {
StudentDAO stdDAO = new StudentDAO();
stdDAO.selectStudent();
}
}
StudentInsert.java : 데이터 삽입 (insert)
import java.util.Date;
import java.util.Scanner;
public class StudentInsert{
public void insert() {
Scanner sc = new Scanner(System.in);
System.out.println("학생 정보 등록");
System.out.println("----------------------\n");
System.out.print("학번 입력 : ");
String stdNo = sc.nextLine();
System.out.print("성명 입력 : ");
String stdName = sc.nextLine();
System.out.print("학년 입력 : ");
int stdYear = Integer.parseInt(sc.nextLine());
System.out.print("주소 입력 : ");
String stdAddress = sc.nextLine();
System.out.print("생년월일 입력 : ");
String stdBirthday = sc.nextLine();
System.out.print("학과번호 입력 : ");
String dptNo = sc.nextLine();
StudentDTO stdDTO = new StudentDTO(stdNo, stdName, stdYear, stdAddress, stdBirthday, dptNo);
StudentDAO stdDAO = new StudentDAO();
stdDAO.insertStudent(stdDTO);
}
}
StudentUpdate.java : 데이터 수정 (update)
import java.util.Scanner;
public class StudentUpdate {
public void update() {
Scanner sc = new Scanner(System.in);
System.out.println("학생 정보 수정");
System.out.println("----------------------\n");
System.out.print("수정할 학생의 학번 입력 : ");
String stdNo = sc.nextLine();
System.out.print("성명 입력 : ");
String stdName = sc.nextLine();
System.out.print("학년 입력 : ");
int stdYear = Integer.parseInt(sc.nextLine());
System.out.print("주소 입력 : ");
String stdAddress = sc.nextLine();
System.out.print("생년월일 입력 : ");
String stdBirthday = sc.nextLine();
System.out.print("학과번호 입력 : ");
String dptNo = sc.nextLine();
StudentDTO stdDTO = new StudentDTO(stdNo, stdName, stdYear, stdAddress, stdBirthday, dptNo);
StudentDAO stdDAO = new StudentDAO();
stdDAO.updateStudent(stdDTO);
}
}
StudentDelete.java : 데이터 삭제 (delete)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;
public class StudentDelete {
public void delete() {
Scanner sc = new Scanner(System.in);
System.out.println("학생 정보 삭제");
System.out.println("----------------------\n");
System.out.print("삭제할 학생의 학번 입력 : ");
String stdNo = sc.next();
StudentDAO stdDAO = new StudentDAO();
stdDAO.deleteStudent(stdNo);
}
}
StudentMain : switch 문 사용해 메뉴 처리
import java.util.Scanner;
public class StudentMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("************************");
System.out.println(" 학생 관리 프로그램");
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("------------------------------------------");
System.out.print("메뉴 번호 입력 : ");
int chioce = sc.nextInt();
switch(chioce) {
case 1 :
StudentInsert stdInsert = new StudentInsert();
stdInsert.insert();
break;
case 2 :
StudentSelect stdSelect = new StudentSelect();
stdSelect.select();
break;
case 3 :
StudentUpdate stdUpdate = new StudentUpdate();
stdUpdate.update();
break;
case 4 :
StudentDelete stdDelete = new StudentDelete();
stdDelete.delete();
break;
case 5 :
break;
default :
System.out.println("\n잘못 입력하셨습니다.");
}
System.out.println("------------------------------------------");
System.out.println("종료되었습니다.");
System.out.println("------------------------------------------");
}
}
'Backend > Java' 카테고리의 다른 글
컬렉션 프레임워크(Collection Framework) (0) | 2021.11.30 |
---|---|
제네릭 (Generic) (0) | 2021.11.29 |
JDBC 연동 구현 예제 (0) | 2021.11.26 |
Statement VS PreparedStatement (0) | 2021.11.26 |
DAO DTO VO 개념 (0) | 2021.11.25 |