우당탕탕 개발일지
18일차_과제 본문
반응형
콘솔창 게시물
- BoardDTO.java : Board 데이터
- BoardDAO.java : DB 관련 작업
- IndexMain.java : 메인화면
- Board.java : 인터페이스
기능
- BoardListService.java : 목록 출력
- BoardViewService.java : 원하는 게시물 출력
- BoardWriteService.java : 게시물 작성
코드
BoardDTO.java : Board 데이터
package board.bean;
import java.text.SimpleDateFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BoardDTO {
private int seq;
private String id, name, subject, content;
private String logtime;
@Override
public String toString() {
return seq + "\t"
+ subject + "\t"
+ id + "\t"
+ name + "\t"
+ logtime + "\t"
+ content;
}
public String list() {
return seq + "\t"
+ subject + "\t"
+ id + "\t"
+ logtime;
}
}
BoardDAO.java : DB 관련 작업
package board.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import board.bean.BoardDTO;
public class BoardDAO {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String uesrname = "c##java";
private String pw = "1234";
private Connection con;
private PreparedStatement prpState;
private ResultSet result;
private static BoardDAO instance = null;
public BoardDAO() {
// 드라이브 연결
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static BoardDAO getInstance() {
if(instance == null) {
synchronized (BoardDAO.class) {
instance = new BoardDAO();
}
}
return instance;
}
public void getConnection() {
// DB 연결
try {
con = DriverManager.getConnection(url, uesrname, pw);
} catch (SQLException e) {
e.printStackTrace();
}
}
public int write(BoardDTO boardDTO) {
String sql = "insert into board_java values(board_java_seq.NEXTVAL, ?, ?, ?, ?, sysdate)";
int su = 0;
getConnection();
try {
prpState = con.prepareStatement(sql);
prpState.setString(1, boardDTO.getId());
prpState.setString(2, boardDTO.getName());
prpState.setString(3, boardDTO.getSubject());
prpState.setString(4, boardDTO.getContent());
su = prpState.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return su;
}
public ArrayList<BoardDTO> list() {
String sql = "select * from board_java order by logtime";
ArrayList<BoardDTO> dtoList = new ArrayList<BoardDTO>();
getConnection();
try {
prpState = con.prepareStatement(sql);
result = prpState.executeQuery();
while(result.next()) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy.MM.dd");
String date = dateformat.format(result.getDate("logtime"));
BoardDTO dto = BoardDTO.builder()
.seq(result.getInt("seq"))
.id(result.getString("id"))
.name(result.getString("name"))
.subject(result.getString("subject"))
.content(result.getString("content"))
.logtime(date)
.build();
dtoList.add(dto);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(result != null) result.close();
if(prpState != null) prpState.close();
if(con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return dtoList;
}
public BoardDTO view(int boardNum) {
BoardDTO boardDTO = null;
String sql = "select * from board_java where seq = ?";
getConnection();
try {
prpState = con.prepareStatement(sql);
prpState.setString(1, boardNum+"");
result = prpState.executeQuery();
if(result.next()) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy.MM.dd");
String date = dateformat.format(result.getDate("logtime"));
boardDTO = BoardDTO.builder()
.seq(result.getInt("seq"))
.id(result.getString("id"))
.name(result.getString("name"))
.subject(result.getString("subject"))
.content(result.getString("content"))
.logtime(date)
.build();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(result != null) result.close();
if(prpState != null) prpState.close();
if(con != null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return boardDTO;
}
}
IndexMain.java : 메인화면
package board.main;
import java.util.Scanner;
import board.service.*;
public class IndexMain {
public void menu() {
Scanner sc = new Scanner(System.in);
int num = 0;
boolean isSelect = true;
Board board = null;
while(isSelect) {
System.out.print("****************\n"
+ " 1. 글쓰기\n"
+ " 2. 목록\n"
+ " 3. 작성한 글 내용 보기\n"
+ " 4. 종료\n"
+ "****************\n"
+ " 번호선택 : ");
num = sc.nextInt();
switch (num) {
case 1:
board = new BoardWriteService();
break;
case 2:
board = new BoardListService();
break;
case 3:
board = new BoardViewService();
break;
case 4:
isSelect = false;
System.out.println("프로그램을 종료합니다.");
break;
default:
System.out.println("1~4번 중 입력하세요.\n");
break;
}
if(num < 4 && num > 0) {
board.execute();
}
}
}
public static void main(String[] args) {
new IndexMain().menu();
}
}
Board.java : 인터페이스
package board.service;
public interface Board {
public void execute();
}
기능
BoardListService.java : 목록 출력
package board.service;
import java.util.ArrayList;
import board.bean.BoardDTO;
import board.dao.BoardDAO;
public class BoardListService implements Board {
@Override
public void execute() {
BoardDAO boardDAO = BoardDAO.getInstance();
ArrayList<BoardDTO> dtoList = boardDAO.list();
System.out.println("---------------------------------------------------------");
System.out.println("게시물 번호\t제목\t아이디\t날짜");
System.out.println("---------------------------------------------------------");
for(BoardDTO dto : dtoList) {
System.out.println(dto.list());
}
}
}
BoardViewService.java : 원하는 게시물 출력
package board.service;
import java.util.Scanner;
import board.bean.BoardDTO;
import board.dao.BoardDAO;
public class BoardViewService implements Board {
@Override
public void execute() {
Scanner sc = new Scanner(System.in);
BoardDAO boardDAO = BoardDAO.getInstance();
System.out.println("보고 싶은 게시물 번호를 입력해주세요. ");
System.out.print("게시물 번호 : ");
int boardNum = sc.nextInt();
BoardDTO dto = boardDAO.view(boardNum);
if(dto != null) {
System.out.println("게시물 번호\t제목\t아이디\t이름\t날짜\t내용");
System.out.println(dto);
}else System.out.println("해당 게시물 번호는 존재하지 않습니다.");
}
}
BoardWriteService.java : 게시물 출력
package board.service;
import java.util.Scanner;
import board.bean.BoardDTO;
import board.dao.BoardDAO;
public class BoardWriteService implements Board {
@Override
public void execute() {
Scanner sc = new Scanner(System.in);
BoardDAO boardDAO = BoardDAO.getInstance();
BoardDTO boardDTO = new BoardDTO();
System.out.println("게시물 작성");
System.out.print("아이디 : ");
boardDTO.setId(sc.next());
System.out.print("이름 : ");
boardDTO.setName(sc.next());
sc.nextLine(); // 엔터
System.out.print("제목 : ");
boardDTO.setSubject(sc.nextLine());
System.out.print("내용 : ");
boardDTO.setContent(sc.nextLine());
int su = boardDAO.write(boardDTO);
if(su == 1) System.out.println("작성하신 글을 등록하였습니다. ");
}
}
출력화면
1. 글쓰기
2. 목록
3. 작성한 글 내용 보기
4. 종료
반응형