우당탕탕 개발일지

18일차_과제 본문

비트캠프/과제

18일차_과제

ujin302 2024. 7. 26. 18:20
반응형

콘솔창 게시물

 

 

  • 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. 종료

반응형

'비트캠프 > 과제' 카테고리의 다른 글

27일차_과제  (0) 2024.08.08
26일차_과제  (0) 2024.08.07
16일차_과제  (1) 2024.07.24
15일차_과제  (0) 2024.07.23
11일차_과제  (0) 2024.07.18