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
- 집합_SET
- NestedFor
- 다형성
- 생성자오버로드
- 예외처리
- abstract
- 정수형타입
- 예외미루기
- 제네릭
- 인터페이스
- exception
- 객체 비교
- 컬렉션 타입
- 사용자예외클래스생성
- 오라클
- 환경설정
- 자동차수리시스템
- Java
- 추상메서드
- 한국건설관리시스템
- 자바
- 대덕인재개발원
- cursor문
- EnhancedFor
- 참조형변수
- GRANT VIEW
- 컬렉션프레임워크
- 메소드오버로딩
- 어윈 사용법
- oracle
Archives
- Today
- Total
거니의 velog
230919_MVC 2 본문
게시판 테이블 구조 및 시퀀스
create table jdbc_board(
board_no number not null, -- 번호(자동증가)
board_title varchar2(100) not null, -- 제목
board_writer varchar2(50) not null, -- 작성자
board_date date not null, -- 작성날짜
board_cnt number default 0, -- 조회수
board_content clob, -- 내용
constraint pk_jdbc_board primary key (board_no)
);
create sequence board_seq
start with 1 -- 시작번호
increment by 1; -- 증가값
----------------------------------------------------------
// 시퀀스의 다음 값 구하기
// 시퀀스이름.nextVal
----------------------------------------------------------
위의 테이블을 작성하고 게시판을 관리하는
전체 목록 출력, 새글작성, 수정, 삭제, 검색 기능을
아래 예시와 같이 구현하시오.(MVC패턴과 SINGLE패턴 적용)
------------------------------------------------------------
실행 예)
-------------------------------------------------------------
No 제 목 작성자 조회수
-------------------------------------------------------------
4 네번째 게시글 홍길동 0
3 세번째 게시글 일지매 0
2 두번째 게시글 홍길동 0
1 첫번째 게시글 성춘향 0
-------------------------------------------------------------
메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝
작업선택 >> 1 <-- 입력
새글 작성하기
-----------------------------------
- 제 목 : 안녕하세요? <-- 입력
- 작성자 : 변학도 <-- 입력
- 내 용 : 연습용 입니다. <-- 입력
새글이 추가되었습니다.
-------------------------------------------------------------
No 제 목 작성자 조회수
-------------------------------------------------------------
5 안녕하세요? 변학도 0
4 네번째 게시글 홍길동 0
3 세번째 게시글 일지매 0
2 두번째 게시글 홍길동 0
1 첫번째 게시글 성춘향 0
-------------------------------------------------------------
메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝
작업선택 >> 2 <-- 입력
보기를 원하는 게시물 번호 입력 >> 5 <-- 입력
5번글 내용
------------------------------------------------------------
- 제 목 : 안녕하세요?
- 작성자 : 변학도
- 내 용 : 연습용 입니다.
- 작성일 : 2018-12-12
- 조회수 : 1
-------------------------------------------------------------
메뉴 : 1. 수정 2. 삭제 3. 리스트로 가기
작업선택 >> 1 <-- 입력
수정 작업하기
-----------------------------------
- 제 목 : 수정작업 연습 <-- 입력
- 내 용 : 수정 작업 연습 중입니다. <-- 입력
5번글이 수정되었습니다.
-------------------------------------------------------------
No 제 목 작성자 조회수
-------------------------------------------------------------
5 수정작업 연습 변학도 1
4 네번째 게시글 홍길동 0
3 세번째 게시글 일지매 0
2 두번째 게시글 홍길동 0
1 첫번째 게시글 성춘향 0
-------------------------------------------------------------
메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝
작업선택 >> 2 <-- 입력
보기를 원하는 게시물 번호 입력 >> 5 <-- 입력
5번글 내용
------------------------------------------------------------
- 제 목 : 수정작업 연습
- 작성자 : 변학도
- 내 용 : 수정 작업 연습 중입니다.
- 작성일 : 2018-12-12
- 조회수 : 2
-------------------------------------------------------------
메뉴 : 1. 수정 2. 삭제 3. 리스트로 가기
작업선택 >> 2 <-- 입력
5번글이 삭제되었습니다.
-------------------------------------------------------------
No 제 목 작성자 조회수
-------------------------------------------------------------
4 네번째 게시글 홍길동 0
3 세번째 게시글 일지매 0
2 두번째 게시글 홍길동 0
1 첫번째 게시글 성춘향 0
-------------------------------------------------------------
메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝
작업선택 >> 3 <-- 입력
검색 작업
--------------------------------------------
- 검색할 제목 입력 : 첫번째 <-- 입력
-------------------------------------------------------------
No 제 목 작성자 조회수
-------------------------------------------------------------
1 첫번째 게시글 성춘향 0
-------------------------------------------------------------
메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝
작업선택 >> 3 <-- 입력
검색 작업
--------------------------------------------
- 검색할 제목 입력 : <-- 입력(입력값이 없으면 전체 자료 출력)
-------------------------------------------------------------
No 제 목 작성자 조회수
-------------------------------------------------------------
4 네번째 게시글 홍길동 0
3 세번째 게시글 일지매 0
2 두번째 게시글 홍길동 0
1 첫번째 게시글 성춘향 0
-------------------------------------------------------------
메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝
작업선택 >> 0 <-- 입력
게시판 프로그램 종료....
[JdbcBoardVO.java]
package kr.or.ddit.vo;
public class JdbcBoardVO {
private int board_no;
private String board_title;
private String board_writer;
private String board_date;
private int board_cnt;
private String board_content;
// 생성자
public JdbcBoardVO() {}
public JdbcBoardVO(int board_no, String board_title, String board_writer, String board_date, int board_cnt, String board_content) {
this.board_no = board_no;
this.board_title = board_title;
this.board_writer = board_writer;
this.board_date = board_date;
this.board_cnt = board_cnt;
this.board_content = board_content;
}
public int getBoard_no() {
return board_no;
}
public void setBoard_no(int board_no) {
this.board_no = board_no;
}
public String getBoard_title() {
return board_title;
}
public void setBoard_title(String board_title) {
this.board_title = board_title;
}
public String getBoard_writer() {
return board_writer;
}
public void setBoard_writer(String board_writer) {
this.board_writer = board_writer;
}
public String getBoard_date() {
return board_date;
}
public void setBoard_date(String board_date) {
this.board_date = board_date;
}
public int getBoard_cnt() {
return board_cnt;
}
public void setBoard_cnt(int board_cnt) {
this.board_cnt = board_cnt;
}
public String getBoard_content() {
return board_content;
}
public void setBoard_content(String board_content) {
this.board_content = board_content;
}
@Override
public String toString() {
return "BoardVO [board_no=" + board_no + ", board_title=" + board_title + ", board_writer=" + board_writer
+ ", board_date=" + board_date + ", board_cnt=" + board_cnt + ", board_content=" + board_content + "]";
}
}
[IJdbcBoardDao.java]
package kr.or.ddit.board.dao;
import java.util.List;
import kr.or.ddit.vo.JdbcBoardVO;
public interface IJdbcBoardDao {
/**
* BoardVO에 담겨진 자료를 DB에 insert하는 메서드
*
* @param boardVo DB에 insert할 자료가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int insertBoard(JdbcBoardVO boardVo);
/**
* 게시글 번호를 인수값으로 받아서 해당 게시글을 삭제하는 메서드
*
* @param boardNo 삭제할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int deleteBoard(int boardNo);
/**
* 하나의 BoardVO자료를 이용하여 DB에 update하는 메서드
*
* @param boardVo update할 게시글 정보가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int updateBoard(JdbcBoardVO boardVo);
/**
* DB에서 전체 게시글 목록을 가져오는 메서드
*
* @return BoardVO객체를 담고 있는 List객체
*/
public List<JdbcBoardVO> getAllBoardList();
/**
* 게시글 번호를 인수값으로 받아서 해당 게시글 정보를 가져오는 메서드
*
* @param boardNo 가져올 게시글의 게시글 번호
* @return 게시글 번호에 맞는 자료가 있으면 해당 게시글 정보를
* 담고 있는 BoardVO객체, 자료가 없으면 null 반환
*/
public JdbcBoardVO getBoard(int boardNo);
/**
* 게시글의 제목을 인수값으로 받아서 게시글을 검색하는 메서드
*
* @param title 검색할 게시글의 제목
* @return 검색한 결과가 저장된 List객체
*/
public List<JdbcBoardVO> getSearchBoardList(String title);
/**
* 게시글 번호를 인수값으로 받아서 해당 게시글의 조회수를 증가시키는 메서드
*
* @param boardNo 조회수를 증가할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int setCountIncrement(int boardNo);
}
[IJdbcBoardService.java]
package kr.or.ddit.board.service;
import java.util.List;
import kr.or.ddit.vo.JdbcBoardVO;
public interface IJdbcBoardService {
/**
* BoardVO에 담겨진 자료를 DB에 insert하는 메서드
*
* @param boardVo DB에 insert할 자료가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int insertBoard(JdbcBoardVO boardVo);
/**
* 게시글 번호를 인수값으로 받아서 해당 게시글을 삭제하는 메서드
*
* @param boardNo 삭제할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int deleteBoard(int boardNo);
/**
* 하나의 BoardVO자료를 이용하여 DB에 update하는 메서드
*
* @param boardVo update할 게시글 정보가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int updateBoard(JdbcBoardVO boardVo);
/**
* DB에서 전체 게시글 목록을 가져오는 메서드
*
* @return BoardVO객체를 담고 있는 List객체
*/
public List<JdbcBoardVO> getAllBoardList();
/**
* 게시글 번호를 인수값으로 받아서 해당 게시글 정보를 가져오는 메서드
*
* @param boardNo 가져올 게시글의 게시글 번호
* @return 게시글 번호에 맞는 자료가 있으면 해당 게시글 정보를
* 담고 있는 BoardVO객체, 자료가 없으면 null 반환
*/
public JdbcBoardVO getBoard(int boardNo);
/**
* 게시글의 제목을 인수값으로 받아서 게시글을 검색하는 메서드
*
* @param title 검색할 게시글의 제목
* @return 검색한 결과가 저장된 List객체
*/
public List<JdbcBoardVO> getSearchBoardList(String title);
/**
* 게시글 번호를 인수값으로 받아서 해당 게시글의 조회수를 증가시키는 메서드
*
* @param boardNo 조회수를 증가할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int setCountIncrement(int boardNo);
}
[JdbcBoardDaoImpl.java]
package kr.or.ddit.board.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 kr.or.ddit.util.DBUtil3;
import kr.or.ddit.vo.JdbcBoardVO;
public class JdbcBoardDaoImpl implements IJdbcBoardDao {
@Override
public int insertBoard(JdbcBoardVO boardVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " INSERT INTO jdbc_board (board_no, board_title, board_writer, board_date, board_cnt, board_content) " +
" VALUES (board_seq.nextVal, ?, ?, sysdate, 0, ?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, boardVo.getBoard_title());
pstmt.setString(2, boardVo.getBoard_writer());
pstmt.setString(3, boardVo.getBoard_content());
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 deleteBoard(int boardNo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " delete from jdbc_board where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, boardNo);
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 updateBoard(JdbcBoardVO boardVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " UPDATE jdbc_board SET " +
" board_title = ?, " +
" board_content = ?, " +
" board_date = sysdate " +
"WHERE board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, boardVo.getBoard_title());
pstmt.setString(2, boardVo.getBoard_content());
pstmt.setInt(3, boardVo.getBoard_no());
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<JdbcBoardVO> getAllBoardList() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<JdbcBoardVO> boardList = null;
try {
conn = DBUtil3.getConnection();
String sql = " select board_no " +
" , board_title " +
" , board_writer " +
" , to_char(board_date, 'YYYY-MM-DD') as board_date " +
" , board_cnt " +
" , board_content " +
" from jdbc_board " +
" order by board_no desc ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
if(boardList == null) boardList = new ArrayList<JdbcBoardVO>();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_no(rs.getInt("board_no"));
boardVo.setBoard_title(rs.getString("board_title"));
boardVo.setBoard_writer(rs.getString("board_writer"));
boardVo.setBoard_date(rs.getString("board_date"));
boardVo.setBoard_cnt(rs.getInt("board_cnt"));
boardVo.setBoard_content(rs.getString("board_content"));
boardList.add(boardVo);
}
} 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 boardList;
}
@Override
public JdbcBoardVO getBoard(int boardNo) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
JdbcBoardVO boardVo = null;
try {
conn = DBUtil3.getConnection();
String sql = " select board_no " +
" , board_title " +
" , board_writer " +
" , to_char(board_date, 'YYYY-MM-DD') as board_date " +
" , board_cnt " +
" , board_content " +
" from jdbc_board " +
" where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, boardNo);
rs = pstmt.executeQuery();
if(rs.next()) {
boardVo = new JdbcBoardVO();
boardVo.setBoard_no(rs.getInt("board_no"));
boardVo.setBoard_title(rs.getString("board_title"));
boardVo.setBoard_writer(rs.getString("board_writer"));
boardVo.setBoard_date(rs.getString("board_date"));
boardVo.setBoard_cnt(rs.getInt("board_cnt"));
boardVo.setBoard_content(rs.getString("board_content"));
}
} 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 boardVo;
}
@Override
public List<JdbcBoardVO> getSearchBoardList(String title) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<JdbcBoardVO> boardList = null;
try {
conn = DBUtil3.getConnection();
String sql = " select board_no " +
" , board_title " +
" , board_writer " +
" , to_char(board_date, 'YYYY-MM-DD') as board_date " +
" , board_cnt " +
" , board_content " +
" from jdbc_board " +
" where board_title like '%' || ? || '%' " +
" order by board_no desc ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, title);
rs = pstmt.executeQuery();
while(rs.next()) {
if(boardList == null) boardList = new ArrayList<JdbcBoardVO>();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_no(rs.getInt("board_no"));
boardVo.setBoard_title(rs.getString("board_title"));
boardVo.setBoard_writer(rs.getString("board_writer"));
boardVo.setBoard_date(rs.getString("board_date"));
boardVo.setBoard_cnt(rs.getInt("board_cnt"));
boardVo.setBoard_content(rs.getString("board_content"));
boardList.add(boardVo);
}
} 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 boardList;
}
@Override
public int setCountIncrement(int boardNo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " update jdbc_board\r\n" +
" set board_cnt = board_cnt + 1\r\n" +
" where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, boardNo);
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;
}
}
[JdbcBoardServiceImpl.java]
package kr.or.ddit.board.service;
import java.util.List;
import kr.or.ddit.board.dao.IJdbcBoardDao;
import kr.or.ddit.board.dao.JdbcBoardDaoImpl;
import kr.or.ddit.vo.JdbcBoardVO;
public class JdbcBoardServiceImpl implements IJdbcBoardService {
private IJdbcBoardDao dao; // DAO객체 변수 선언
// 생성자
public JdbcBoardServiceImpl() {
dao = new JdbcBoardDaoImpl();
}
@Override
public int insertBoard(JdbcBoardVO boardVo) {
return dao.insertBoard(boardVo);
}
@Override
public int deleteBoard(int boardNo) {
return dao.deleteBoard(boardNo);
}
@Override
public int updateBoard(JdbcBoardVO boardVo) {
return dao.updateBoard(boardVo);
}
@Override
public List<JdbcBoardVO> getAllBoardList() {
return dao.getAllBoardList();
}
@Override
public JdbcBoardVO getBoard(int boardNo) {
return dao.getBoard(boardNo);
}
@Override
public List<JdbcBoardVO> getSearchBoardList(String title) {
return dao.getSearchBoardList(title);
}
@Override
public int setCountIncrement(int boardNo) {
return dao.setCountIncrement(boardNo);
}
}
[JdbcBoardController.java]
package kr.or.ddit.board.controller;
import java.util.List;
import java.util.Scanner;
import kr.or.ddit.board.service.IJdbcBoardService;
import kr.or.ddit.board.service.JdbcBoardServiceImpl;
import kr.or.ddit.vo.JdbcBoardVO;
public class JdbcBoardController {
private IJdbcBoardService service;
private Scanner scan;
public JdbcBoardController() {
service = new JdbcBoardServiceImpl();
scan = new Scanner(System.in);
}
public static void main(String[] args) {
new JdbcBoardController().boardStart();
}
public void boardStart(){
String title = null;
while(true){
int choice = displayMenu(title);
title = null;
switch(choice){
case 1 : // 새글 작성
insertBoard(); break;
case 2 : // 게시글 보기
viewBoard(); break;
case 3 : // 검색
title = searchBoard(); break;
case 0 : // 작업 끝...
System.out.println();
System.out.println("게시판 프로그램을 종료합니다.");
return;
default :
System.out.println("작업 번호를 잘못 입력했습니다. 다시 입력하세요.");
}
}
}
// 게시글의 검색 작업 ==> 검색할 단어를 입력 받아서 반환하는 메서드
private String searchBoard(){
scan.nextLine(); // 입력 버퍼 비우기
System.out.println();
System.out.println("검색 작업");
System.out.println("--------------------------------------------");
System.out.print("- 검색할 제목 입력 : ");
String title = scan.nextLine();
return title;
}
// 게시글의 내용을 보여주는 메서드
private void viewBoard(){
System.out.println();
System.out.print("보기를 원하는 게시물 번호 입력 >> ");
int boardNo = scan.nextInt();
JdbcBoardVO boardVo = service.getBoard(boardNo);
int cnt = service.setCountIncrement(boardNo);
if(boardVo == null){
System.out.println(boardNo + "번의 게시글이 존재하지 않습니다.");
return;
}
int num;
do {
System.out.println();
System.out.println("------------------------------------------------------------");
System.out.println("- 제 목 : " + boardVo.getBoard_title());
System.out.println("- 작성자 : " + boardVo.getBoard_writer());
System.out.println("- 내 용 : " + boardVo.getBoard_content());
System.out.println("- 작성일 : " + boardVo.getBoard_date());
System.out.println("- 조회수 : " + (boardVo.getBoard_cnt() + 1));
System.out.println("-------------------------------------------------------------");
System.out.println("메뉴 : 1. 수정 2. 삭제 3. 리스트로 가기");
System.out.print("작업선택 >> ");
num = scan.nextInt();
switch(num){
case 1 : // 수정
updateBoard(boardNo); break;
case 2 : // 삭제
deleteBoard(boardNo); break;
case 3 : // 리스트로 가기
return;
default :
System.out.println("작업 번호는 1번 ~ 3번 사이만 입력하세요.");
System.out.println("다시 입력하세요.");
}
}while(num < 1 || num > 3);
}
// 게시글을 삭제하는 메서드
private void deleteBoard(int boardNo){
int cnt = service.deleteBoard(boardNo);
if(cnt>0){
System.out.println(boardNo + "번글이 삭제되었습니다.");
}else{
System.out.println(boardNo + "번글 삭제 작업 실패!!!");
}
}
// 게시글의 제목과 내용을 수정하는 메서드
private void updateBoard(int boardNo){
scan.nextLine(); // 입력 버퍼 비우기
System.out.println();
System.out.println("수정 작업하기");
System.out.println("-----------------------------------");
System.out.print("- 제 목 : ");
String title = scan.nextLine();
System.out.print("- 내 용 : ");
String content = scan.nextLine();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_no(boardNo);
boardVo.setBoard_title(title);
boardVo.setBoard_content(content);
int cnt = service.updateBoard(boardVo);
if(cnt > 0){
System.out.println(boardNo + "번글이 수정되었습니다. ");
}else{
System.out.println(boardNo + "번글 수정 작업 실패!!!");
}
}
// 새글을 작성하는 메서드
private void insertBoard(){
scan.nextLine(); // 입력 버퍼 비우기
System.out.println();
System.out.println("새글 작성하기");
System.out.println("--------------------------------------------");
System.out.print("- 제 목 : ");
String title = scan.nextLine();
System.out.print("- 작 성 자 : ");
String writer = scan.nextLine();
System.out.print("- 내 용 : ");
String content = scan.nextLine();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_title(title);
boardVo.setBoard_writer(writer);
boardVo.setBoard_content(content);
int cnt = service.insertBoard(boardVo);
if(cnt > 0){
System.out.println("새글이 추가되었습니다...");
}else{
System.out.println("새글 추가 실패!!!");
}
}
// 게시판 목록을 보여주고 메뉴를 나타내며
// 사용자가 입력한 작업번호를 반환하는 메서드
private int displayMenu(String title){
List<JdbcBoardVO> boardList = null;
if(title == null){
boardList = service.getAllBoardList();
}else{
boardList = service.getSearchBoardList(title);
}
System.out.println();
System.out.println("-------------------------------------------------------------");
System.out.println(" No 제 목 작성자 조회수");
System.out.println("-------------------------------------------------------------");
if(boardList == null || boardList.size() == 0){
System.out.println(" 출력할 게시글이 하나도 없습니다...");
}else{
for(JdbcBoardVO boardVo : boardList){
System.out.println(
boardVo.getBoard_no() + "\t" +
boardVo.getBoard_title() + "\t" +
boardVo.getBoard_writer() + "\t" +
boardVo.getBoard_cnt()
);
}
}
System.out.println("-------------------------------------------------------------");
System.out.println("메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝");
System.out.print("작업 선택 >> ");
int num = scan.nextInt();
return num;
}
}
[싱글톤 패턴]
[MySingleton.java]
package kr.or.ddit.basic;
/*
* - singleton패턴 ==> 객체가 1개만 만들어지게 하는 방법
* (외부에서 new 명령을 사용하지 못하게 한다.)
*
* - 사용 이유
* 1) 메모리 낭비를 방지할 수 있다.
* 2) 데이터의 공유가 쉽다.
*
* - singleton 클래스 만드는 방법(3가지 필수 구성 요소)
* 1. 자신 class의 참조값이 저장될 변수를 private static으로 선언한다.
*
* 2. 모든 생성자의 접근 제한자를 private으로 한다.
*
* 3. 자신 class의 인스턴스를 생성하고 반환하는 메서드를
* public static으로 작성한다.
* (이 메서드의 이름은 보통 getInstance로 한다.)
*
*/
public class MySingleton {
// 1번
private static MySingleton instance;
// 2번 ==> 생성자가 없으면 기본 생성자를 작성해야 한다.
public MySingleton() {
System.out.println("싱글톤 클래스의 생성자 호출입니다...");
}
// 3번
public static MySingleton getInstance() {
// 1) 만약 1번의 변수값이 null이면 현재 객체를 생성하여 변수에 저장한다.
// 2) 1번의 변수값을 반환한다.
if(instance == null) instance = new MySingleton();
return instance;
}
// 기타... ==> 이 클래스의 용도에 맞는 내용들을 작성한다.
public void displayTest() {
System.out.println("싱글톤 클래스의 메서드 호출입니다...");
}
}
[SingletonTest.java]
package kr.or.ddit.basic;
public class SingletonTest {
public static void main(String[] args) {
// 생성자가 private으로 감춰져 있기 때문에 객체 생성이 불가능하다.
// 즉, 외부에서 new 명령으로 생성 불가.
// MySingleton test1 = new MySingleton();
MySingleton test2 = MySingleton.getInstance(); // 싱글톤 클래스의 생성자 호출입니다...
MySingleton test3 = MySingleton.getInstance(); // 메시지 출력이 1번만 됨. 즉, 객체는 1개만 만들어진 것.
// test2와 test3는 결국 같은 객체라는 말...
System.out.println("test2 => " + test2.toString()); // test2 => kr.or.ddit.basic.MySingleton@15db9742
System.out.println("test3 => " + test3.toString()); // test3 => kr.or.ddit.basic.MySingleton@15db9742
System.out.println(test2 == test3); // true
System.out.println(test2.equals(test3)); // true
test3.displayTest(); // 싱글톤 클래스의 메서드 호출입니다...
}
}
[MemberDaoImpl.java]
package kr.or.ddit.member.dao;
...
public class MemberDaoImpl implements IMemberDao {
// 1번
private static MemberDaoImpl dao;
// 2번
private MemberDaoImpl() {}
// 3번
public static MemberDaoImpl getInstance() {
if(dao == null) dao = new MemberDaoImpl();
return dao;
}
...
[MemberServiceImpl.java]
package kr.or.ddit.member.service;
...
public class MemberServiceImpl implements IMemberService {
private IMemberDao dao; // DAO객체 변수 선언
// 1번
private static MemberServiceImpl service;
// 2번
private MemberServiceImpl() {
dao = MemberDaoImpl.getInstance();
}
// 3번
public static MemberServiceImpl getInstance() {
if(service == null) service = new MemberServiceImpl();
return service;
}
...
[MemberController.java]
package kr.or.ddit.member.controller;
...
public class MemberController {
private IMemberService service; // Service객체 변수 선언
private Scanner scan;
// 생성자
public MemberController() {
// service = new MemberServiceImpl();
service = MemberServiceImpl.getInstance();
scan = new Scanner(System.in);
}
...
[선생님 풀이]
-------------------------------------------
-- VO 객체의 멤버변수를 자동으로 만들기(DB연동용)
-- private 자료형이름 컬럼명;
select 'private ' ||
decode(lower(data_type), 'number', 'int ', 'String ') ||
lower(column_name) || ';'
from cols
where lower(table_name) = 'jdbc_board';
[JdbcBoardVO.java]
package kr.or.ddit.vo;
public class JdbcBoardVO {
private int board_no;
private String board_title;
private String board_writer;
private String board_date;
private int board_cnt;
private String board_content;
public int getBoard_no() {
return board_no;
}
public void setBoard_no(int board_no) {
this.board_no = board_no;
}
public String getBoard_title() {
return board_title;
}
public void setBoard_title(String board_title) {
this.board_title = board_title;
}
public String getBoard_writer() {
return board_writer;
}
public void setBoard_writer(String board_writer) {
this.board_writer = board_writer;
}
public String getBoard_date() {
return board_date;
}
public void setBoard_date(String board_date) {
this.board_date = board_date;
}
public int getBoard_cnt() {
return board_cnt;
}
public void setBoard_cnt(int board_cnt) {
this.board_cnt = board_cnt;
}
public String getBoard_content() {
return board_content;
}
public void setBoard_content(String board_content) {
this.board_content = board_content;
}
}
[IJdbcBoardDao.java]
package kr.or.ddit.board.dao;
import java.util.List;
import kr.or.ddit.vo.JdbcBoardVO;
public interface IJdbcBoardDao {
/**
* JdbcBoardVO에 담겨진 자료를 DB에 insert하는 메서드
*
* @param boardVo DB에 insert할 자료가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int insertBoard(JdbcBoardVO boardVo);
/**
* 게시글 번호를 매개변수로 받아서 해당 게시글 정보를 삭제하는 메서드
*
* @param boardNo 삭제할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int deleteBoard(int boardNo);
/**
* JdbcBoardVO에 저장된 자료를 이용하여 update 작업을 수행하는 메서드
*
* @param boardVo 수정할 자료가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int updateBoard(JdbcBoardVO boardVo);
/**
* DB의 jdbc_board 테이블의 전체 데이터를 가져와 List에 담아서 반환하는 메서드
*
* @return JdbcBoardVO 객체를 저장하고 있는 List객체
*/
public List<JdbcBoardVO> getAllBoard();
/**
* 게시글 번호를 매개변수로 받아서 해당 게시글 정보를 가져와 반환하는 메서드
*
* @param boardNo 검색할 게시글 번호
* @return 게시글 번호에 맞는 자료가 있으면 해당 게시글 정보를 갖는 JdbcBoardVO 객체,
* 자료가 없으면 null 반환
*/
public JdbcBoardVO getBoard(int boardNo);
/**
* 게시글의 제목을 이용하여 게시글을 검색하는 메서드
*
* @param title 검색할 게시글의 제목
* @return 검색된 결과를 담은 List객체
*/
public List<JdbcBoardVO> getSearchBoard(String title);
/**
* 게시글 번호를 매개변수로 받아서 해당 게시글의 조회수를 증가시키는 메서드
*
* @param boardNo 조회수를 증가할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int setCountIncrement(int boardNo);
}
[IJdbcBoardService.java]
package kr.or.ddit.board.service;
import java.util.List;
import kr.or.ddit.vo.JdbcBoardVO;
public interface IJdbcBoardService {
/**
* JdbcBoardVO에 담겨진 자료를 DB에 insert하는 메서드
*
* @param boardVo DB에 insert할 자료가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int insertBoard(JdbcBoardVO boardVo);
/**
* 게시글 번호를 매개변수로 받아서 해당 게시글 정보를 삭제하는 메서드
*
* @param boardNo 삭제할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int deleteBoard(int boardNo);
/**
* JdbcBoardVO에 저장된 자료를 이용하여 update 작업을 수행하는 메서드
*
* @param boardVo 수정할 자료가 저장된 JdbcBoardVO객체
* @return 작업성공 : 1, 작업실패 : 0
*/
public int updateBoard(JdbcBoardVO boardVo);
/**
* DB의 jdbc_board 테이블의 전체 데이터를 가져와 List에 담아서 반환하는 메서드
*
* @return JdbcBoardVO 객체를 저장하고 있는 List객체
*/
public List<JdbcBoardVO> getAllBoard();
/**
* 게시글 번호를 매개변수로 받아서 해당 게시글 정보를 가져와 반환하는 메서드
*
* @param boardNo 검색할 게시글 번호
* @return 게시글 번호에 맞는 자료가 있으면 해당 게시글 정보를 갖는 JdbcBoardVO 객체,
* 자료가 없으면 null 반환
*/
public JdbcBoardVO getBoard(int boardNo);
/**
* 게시글의 제목을 이용하여 게시글을 검색하는 메서드
*
* @param title 검색할 게시글의 제목
* @return 검색된 결과를 담은 List객체
*/
public List<JdbcBoardVO> getSearchBoard(String title);
/**
* 게시글 번호를 매개변수로 받아서 해당 게시글의 조회수를 증가시키는 메서드
*
* @param boardNo 조회수를 증가할 게시글 번호
* @return 작업성공 : 1, 작업실패 : 0
*/
public int setCountIncrement(int boardNo);
}
[JdbcBoardDaoImpl.java]
package kr.or.ddit.board.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 kr.or.ddit.util.DBUtil3;
import kr.or.ddit.vo.JdbcBoardVO;
public class JdbcBoardDaoImpl implements IJdbcBoardDao {
// 싱글톤 패턴
private static JdbcBoardDaoImpl dao;
private JdbcBoardDaoImpl() {}
public static JdbcBoardDaoImpl getInstance() {
if(dao == null) dao = new JdbcBoardDaoImpl();
return dao;
}
@Override
public int insertBoard(JdbcBoardVO boardVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " insert into jdbc_board (board_no, board_title, board_writer, board_date, board_cnt, board_content) "
+ " VALUES (board_seq.nextVal, ?, ?, sysdate, 0, ?) ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, boardVo.getBoard_title());
pstmt.setString(2, boardVo.getBoard_writer());
pstmt.setString(3, boardVo.getBoard_content());
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 deleteBoard(int boardNo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " delete from jdbc_board where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, boardNo);
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 updateBoard(JdbcBoardVO boardVo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " update jdbc_board set " +
" board_title = ?, " +
" board_content = ?, " +
" board_date = sysdate " +
" where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, boardVo.getBoard_title());
pstmt.setString(2, boardVo.getBoard_content());
pstmt.setInt(3, boardVo.getBoard_no());
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<JdbcBoardVO> getAllBoard() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<JdbcBoardVO> boardList = null; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " select * from jdbc_board order by board_no desc ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
if(boardList == null) boardList = new ArrayList<JdbcBoardVO>();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_no(rs.getInt("board_no"));
boardVo.setBoard_title(rs.getString("board_title"));
boardVo.setBoard_writer(rs.getString("board_writer"));
boardVo.setBoard_date(rs.getString("board_date"));
boardVo.setBoard_cnt(rs.getInt("board_cnt"));
boardVo.setBoard_content(rs.getString("board_content"));
boardList.add(boardVo);
}
} 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 boardList;
}
@Override
public JdbcBoardVO getBoard(int boardNo) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
JdbcBoardVO boardVo = null; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " select board_no, board_title, board_writer, "
+ " to_char(board_date, 'YYYY-MM-DD') as board_date, "
+ " board_cnt, board_content from jdbc_board where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, boardNo);
rs = pstmt.executeQuery();
if(rs.next()) {
boardVo = new JdbcBoardVO();
boardVo.setBoard_no(rs.getInt("board_no"));
boardVo.setBoard_title(rs.getString("board_title"));
boardVo.setBoard_writer(rs.getString("board_writer"));
boardVo.setBoard_date(rs.getString("board_date"));
boardVo.setBoard_cnt(rs.getInt("board_cnt"));
boardVo.setBoard_content(rs.getString("board_content"));
}
} 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 boardVo;
}
@Override
public List<JdbcBoardVO> getSearchBoard(String title) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<JdbcBoardVO> boardList = null; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " select * from jdbc_board " +
" where board_title like '%' || ? || '%' " +
" order by board_no desc ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, title);
rs = pstmt.executeQuery();
while(rs.next()) {
if(boardList == null) boardList = new ArrayList<JdbcBoardVO>();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_no(rs.getInt("board_no"));
boardVo.setBoard_title(rs.getString("board_title"));
boardVo.setBoard_writer(rs.getString("board_writer"));
boardVo.setBoard_date(rs.getString("board_date"));
boardVo.setBoard_cnt(rs.getInt("board_cnt"));
boardVo.setBoard_content(rs.getString("board_content"));
boardList.add(boardVo);
}
} 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 boardList;
}
@Override
public int setCountIncrement(int boardNo) {
Connection conn = null;
PreparedStatement pstmt = null;
int cnt = 0; // 반환값이 저장될 변수
try {
conn = DBUtil3.getConnection();
String sql = " update jdbc_board set "
+ " board_cnt = board_cnt + 1 "
+ " where board_no = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, boardNo);
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;
}
}
[JdbcBoardServiceImpl.java]
package kr.or.ddit.board.service;
import java.util.List;
import kr.or.ddit.board.dao.IJdbcBoardDao;
import kr.or.ddit.board.dao.JdbcBoardDaoImpl;
import kr.or.ddit.vo.JdbcBoardVO;
public class JdbcBoardServiceImpl implements IJdbcBoardService {
private IJdbcBoardDao dao;
// 싱글톤 패턴
private static JdbcBoardServiceImpl service;
private JdbcBoardServiceImpl() {
dao = JdbcBoardDaoImpl.getInstance();
}
public static JdbcBoardServiceImpl getInstance() {
if(service == null) service = new JdbcBoardServiceImpl();
return service;
}
@Override
public int insertBoard(JdbcBoardVO boardVo) {
return dao.insertBoard(boardVo);
}
@Override
public int deleteBoard(int boardNo) {
return dao.deleteBoard(boardNo);
}
@Override
public int updateBoard(JdbcBoardVO boardVo) {
return dao.updateBoard(boardVo);
}
@Override
public List<JdbcBoardVO> getAllBoard() {
return dao.getAllBoard();
}
@Override
public JdbcBoardVO getBoard(int boardNo) {
int cnt = dao.setCountIncrement(boardNo);
if(cnt == 0) return null;
return dao.getBoard(boardNo);
}
@Override
public List<JdbcBoardVO> getSearchBoard(String title) {
return dao.getSearchBoard(title);
}
@Override
public int setCountIncrement(int boardNo) {
return dao.setCountIncrement(boardNo);
}
}
[JdbcBoardController.java]
package kr.or.ddit.board.controller;
import java.util.List;
import java.util.Scanner;
import kr.or.ddit.board.service.IJdbcBoardService;
import kr.or.ddit.board.service.JdbcBoardServiceImpl;
import kr.or.ddit.vo.JdbcBoardVO;
public class JdbcBoardController {
private IJdbcBoardService service;
private Scanner scan;
// 생성자
public JdbcBoardController() {
service = JdbcBoardServiceImpl.getInstance();
scan = new Scanner(System.in);
}
public static void main(String[] args) {
new JdbcBoardController().boardStart();
}
// 시작 메서드
public void boardStart() {
String searchTitle = null;
int choice = 0;
while(true){
// 이전의 작업 번호 확인
if(choice != 3) searchTitle = null;
choice = displayMenu(searchTitle);
switch(choice){
case 1 : // 새글 작성
insertBoard(); break;
case 2 : // 게시글 보기
viewBoard(); break;
case 3 : // 검색
searchTitle = searchBoard(); break;
case 0 : // 작업 끝.
System.out.println();
System.out.println("게시판 프로그램 종료...");
return;
default :
System.out.println();
System.out.println("작업 번호를 잘못 입력했습니다. 다시 입력하세요...");
System.out.println();
}
}
}
// 검색할 제목을 입력 받아서 반환하는 메서드
private String searchBoard() {
scan.nextLine(); // 입력 버퍼 비우기
System.out.println();
System.out.println("검색 작업");
System.out.println("--------------------------------------------");
System.out.print("- 검색할 제목 입력 : ");
return scan.nextLine();
}
// 게시글 내용을 보여주는 메서드
private void viewBoard(){
System.out.println();
System.out.print("보기를 원하는 게시물 번호 입력 >> ");
int num = scan.nextInt();
JdbcBoardVO boardVo = service.getBoard(num);
if(boardVo == null){
System.out.println(num + "번의 게시글이 존재하지 않습니다.");
return;
}
System.out.println(num + "번의 게시글 내용");
System.out.println("------------------------------------------------------------");
System.out.println("- 제 목 : " + boardVo.getBoard_title());
System.out.println("- 작성자 : " + boardVo.getBoard_writer());
System.out.println("- 내 용 : " + boardVo.getBoard_content());
System.out.println("- 작성일 : " + boardVo.getBoard_date());
System.out.println("- 조회수 : " + boardVo.getBoard_cnt());
System.out.println("-------------------------------------------------------------");
System.out.println("메뉴 : 1. 수정 2. 삭제 3. 리스트로 가기");
System.out.print("작업선택 >> ");
int choice = scan.nextInt();
switch(choice){
case 1 : // 수정
updateBoard(num); break;
case 2 : // 삭제
deleteBoard(num); break;
case 3 : // 리스트 가기
return;
}
}
// 게시글을 삭제하는 메서드
private void deleteBoard(int boardNo){
int cnt = service.deleteBoard(boardNo);
if(cnt > 0){
System.out.println(boardNo + "번 글이 삭제되었습니다...");
}else{
System.out.println(boardNo + "번 글 삭제 실패!!!");
}
}
// 게시글을 수정하는 메서드
private void updateBoard(int boardNo){
scan.nextLine(); // 입력 버퍼 비우기
System.out.println();
System.out.println("수정 작업하기");
System.out.println("-----------------------------------");
System.out.print("- 제 목 >> ");
String newTitle = scan.nextLine();
System.out.print("- 내 용 >> ");
String newContent = scan.nextLine();
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_title(newTitle);
boardVo.setBoard_content(newContent);
boardVo.setBoard_no(boardNo);
int cnt = service.updateBoard(boardVo);
if(cnt > 0){
System.out.println(boardNo + "번 글이 수정되었습니다... ");
}else{
System.out.println(boardNo + "번 글 수정 실패!!!");
}
}
// 새 글을 작성하는 메서드
private void insertBoard(){
scan.nextLine(); // 입력 버퍼 비우기
System.out.println();
System.out.println("새 글 작성하기");
System.out.println("--------------------------------------------");
System.out.print("- 제 목 >> ");
String title = scan.nextLine();
System.out.print("- 작성자 >> ");
String writer = scan.nextLine();
System.out.print("- 내 용 >> ");
String content = scan.nextLine();
// 입력 받은 데이터를 VO에 저장한다.
JdbcBoardVO boardVo = new JdbcBoardVO();
boardVo.setBoard_title(title);
boardVo.setBoard_writer(writer);
boardVo.setBoard_content(content);
int cnt = service.insertBoard(boardVo);
if(cnt > 0) {
System.out.println("새 글이 추가되었습니다...");
}else {
System.out.println("새 글 추가 실패!!!");
}
}
// 게시글 목록을 보여주고 메뉴를 나타내며 사용자가 입력한 메뉴 번호를 반환하는 메서드
private int displayMenu(String title) {
List<JdbcBoardVO> boardList = null;
if(title == null) {
boardList = service.getAllBoard();
}else {
boardList = service.getSearchBoard(title);
}
System.out.println("-------------------------------------------------------------");
System.out.println(" No 제 목 작성자 조회수");
System.out.println("-------------------------------------------------------------");
if(boardList == null || boardList.size() == 0) {
System.out.println("\t출력할 게시글이 하나도 없습니다...");
}else {
for(JdbcBoardVO boardVo : boardList){
System.out.println(
boardVo.getBoard_no() + "\t" +
boardVo.getBoard_title() + "\t" +
boardVo.getBoard_writer() + "\t" +
boardVo.getBoard_cnt()
);
}
}
System.out.println("-------------------------------------------------------------");
System.out.println("메뉴 : 1. 새글작성 2. 게시글보기 3. 검색 0. 작업끝");
System.out.print("작업 선택 >> ");
return scan.nextInt();
}
}
'대덕인재개발원 > 대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230921_MyBatis 2 (0) | 2023.09.21 |
---|---|
230920_MyBatis 1 (0) | 2023.09.20 |
230918_MVC 1 (0) | 2023.09.15 |
230915_JDBC 2 (0) | 2023.09.15 |
230914_JDBC 2 (0) | 2023.09.14 |