DB - JAVA로 게시판 만드는 퀴즈(4) - SelectAll(게시물 모두 보기) '편'(2022-08-10)

2022. 8. 10. 20:483층 1구역 - 개발의 장/Oracle DataBase

1.서론

 

게시물 모두 보기를 살펴보자.

 

2. 본론

 

main.java

 

package jdbc7_answer;

import java.util.Scanner;

public class Main {
	private	static Scanner in = new Scanner(System.in);
	private static BoardServiceImpl boardService = new BoardServiceImpl();
	
	public static void main(String[] args) {
		while (true) {
			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("7. 프로그램 종료");
			System.out.print("선택 > ");
			int select;
			try {
				select = Integer.parseInt(in.next());
			} catch (Exception e) {
				continue;
			}
			switch (select) {
			case 1:	insert(); break;
			case 2:	selectNum(); break;
			case 3:	selectSubject(); break;
			case 4:	selectAll(); break;
			case 5:	delete(); break;
			case 6: update(); break;
			case 7: disconnection();
					System.out.println("프로그램을 종료합니다.");
					System.exit(0);
			default:
				System.out.println("메뉴 확인 후 다시 입력하세요.");
			}
		}
	}
    
    private static void selectAll() {
		boardService.selectAll();
	}
    }

 

 

 

BoardDAOImpl.java

 

package jdbc7_answer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class BoardDAOImpl implements IBoardDAO {
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;

	public BoardDAOImpl() {
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String username = "<부여받은 계정>";
		String password = "<설치시 설정한 비밀번호>";

		try {
			Class.forName("oracle.jdbc.OracleDriver");
			con = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
    
    @Override
	public ArrayList<BoardDTO> selectAll() {
		String sql = "SELECT num, subject, writer, hit FROM jdbc_concept7 ORDER BY num";
		ArrayList<BoardDTO> boards = new ArrayList<>();
		try {
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()) {
				BoardDTO board = new BoardDTO();
				board.setNum(rs.getInt("num"));
				board.setSubject(rs.getString("subject"));
				board.setWriter(rs.getString("writer"));
				board.setHit(rs.getInt("hit"));
				boards.add(board);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return boards;
	}
    }

 

BoardDTO.java

 

package jdbc7_answer;
/*
SQL> CREATE TABLE jdbc_concept7(
  2  num number,
  3  subject varchar2(20),
  4  content varchar2(20),
  5  writer varchar2(20),
  6  write_time varchar2(10),
  7  hit number
  8  );

SQL> commit;
 */
public class BoardDTO {
	private int num; // 게시글 번호
	private String subject; // 게시글 제목
	private String content; // 게시글 내용
	private String writer; // 게시글 작성자
	private String writeTime; // 게시글 작성일(연월일)
	private int hit; // 게시글 조회수
	
	//게시물 번호, 전체 검색할 때 데이터베이스에 있는 값을 가져와
	//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
	public int getNum() {
		return num;
	}
	
	//검색할 때 데이터베이스에 있는 값을 가져와
	//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
	public String getWriter() {
		return writer;
	}
	
	//게시물 제목, 전체 검색할 때 데이터베이스에 있는 값을 가져와
	//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
	public String getSubject() {
		return subject;
	}
	//전체 검색할 때 데이터베이스에 있는 값을 가져와
	//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
	public String getContent() {
		return content;
	}
	//전체 검색할 때 데이터베이스에 있는 값을 가져와
	//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
	public String getWriteTime() {
		return writeTime;
	}
	
	//전체 검색할 때 데이터베이스에 있는 값을 가져와
	//여기에 임시저장한 후 BoardServiceImpl에서 출력함.
	public int getHit() {
		return hit;
	}
	
	//insert에서 받아와 여기에 임시저장
	public void setSubject(String subject) {
		this.subject = subject; 
	}
	
	//insert에서 받아와 여기에 임시저장
	public void setContent(String content) {
		this.content = content;
	}
	
	//insert에서 받아와 여기에 임시저장
	public void setWriter(String writer) {
		this.writer = writer;
	}
	
	//BoardDAO의 쿼리문에서 받아와 
	//BoardServiceImpl로 이동하고 여기에 임시저장
	public void setNum(int num) {
		this.num = num;
	}
	
	//Date를 나타내주는 java.util를 import를 하여
	//BoardServiceImpl에서 이동해 여기에 임시저장
	public void setWriteTime(String writeTime) {
		this.writeTime = writeTime;
	}
	
	//BoardDAO의 쿼리문에서 받아와 
	//BoardServiceImpl로 이동하고 여기에 임시저장
	public void setHit(int hit) {
		this.hit = hit;
	}
	
	
	
	
	
}

 

BoardServiceImpl.java

 

package jdbc7_answer;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class BoardServiceImpl implements IBoardService{
	private BoardDAOImpl boardDao = new BoardDAOImpl();
    
    @Override
	public void selectAll() {
		ArrayList<BoardDTO> boards = boardDao.selectAll();
		if(boards.isEmpty() == false) {
			System.out.println("번호\t제목\t\t작성자\t조회수");
			for(BoardDTO board : boards) {
				System.out.print(board.getNum() + "\t");
				System.out.print(board.getSubject() + "\t");
				System.out.print(board.getWriter() + "\t");
				System.out.println(board.getHit());
			}
		}else
			System.out.println("등록 후 이용하세요.");
	}
    }

 

3. 결론

 

은행원이 고객분들의 통장을 모두조회(main의 selectAll과정) 하여 정리하고자 한다. 데이터베이스(BoardDAOImpl)에 접근하여 통장의 정보를 모두 받아와 프린트(BoardDTO)로 출력(BoardServiceImpl)한다.