Jam's story
[JDBC]days04 - 게시판 만들기 (DTO ,DAO) 본문
1.tbl_cstvsboard게시판을 오라클에서 만든다 .
2.BoardDTO 게시판 요소들로 클래스하나 만든다.
3.BoardDAO 인터페이스를 선언한다.
DAO란 data access Object로 , 편리성과 보안성의 장점이 있다.
4.BoardDAO 를 implements 한 BoardDAOImpl 클래스를 만든다.
5.BoardDAOImpl에서 메소드를 구현한다. DAO 객체의 메소드
(이사이에서 기능별로 테스트도 진행하였다. -JUnit)
6. BoardService 클래스 추가
7. BoardServiceTest. 클래스 추가
8.BoardController 요청->처리->응답
메뉴선택->처리->boardService->boardDAO->콘솔출력
1. 테이블 만들고 시퀀스를 생성
create sequence SEQ_TBL_CSTVSBOARD;
create table TBL_CSTVSBOARD (
seq number not null primary key
, writer varchar2(20) not null
, pwd varchar2(20) not null
, email varchar2(100)
, title varchar2(200) not null
, writedate date default sysdate
, readed number default 0
, tag number(1) default 0 -- 0 text , 1 html
, content clob
);
2. 게시판 요소들을 가지고 있는 BoardDTO를 생성한다.
package days04.board;
import java.sql.Date;
public class BoardDTO {
// field
private int seq;
private String writer;
private String pwd;
private String email;
private String title;
private Date writedate;
private int readed;
private int tag;
private String content;
// construnctor
public BoardDTO() {
super();
}
public BoardDTO(int seq, String writer, String email, String title, Date writedate, int readed) {
super();
this.seq = seq;
this.writer = writer;
this.email = email;
this.title = title;
this.writedate = writedate;
this.readed = readed;
}
public BoardDTO(int seq, String writer, String pwd, String email, String title, Date writedate, int readed, int tag,
String content) {
super();
this.seq = seq;
this.writer = writer;
this.pwd = pwd;
this.email = email;
this.title = title;
this.writedate = writedate;
this.readed = readed;
this.tag = tag;
this.content = content;
}
// getter, setter
public int getSeq() {
return seq;
}
public void setSeq(int seq) {
this.seq = seq;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getWritedate() {
return writedate;
}
public void setWritedate(Date writedate) {
this.writedate = writedate;
}
public int getReaded() {
return readed;
}
public void setReaded(int readed) {
this.readed = readed;
}
public int getTag() {
return tag;
}
public void setTag(int tag) {
this.tag = tag;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
// toString() 오버라이딩
@Override
public String toString() {
return "BoardDTO [seq=" + seq + ", writer=" + writer + ", pwd=" + pwd + ", email=" + email + ", title=" + title
+ ", writedate=" + writedate + ", readed=" + readed + ", tag=" + tag + ", content=" + content + "]";
}
} // class
3.BoardDAO 인터페이스를 만들고
package days04.board;
import java.sql.SQLException;
import java.util.ArrayList;
public interface BoardDAO {
// 1. 모든 게시글 목록 반환하는 메서드 선언
public abstract ArrayList<BoardDTO> select( ) throws SQLException;
// 2. 새로운 게시글 추가하는 메서드 선언
public abstract int insert( BoardDTO dto ) throws SQLException;
// 3:05 수업시작~
// 3-1. 조회수 증가 메서드 int seq void
void increaseReaded(int seq) throws SQLException;
// 3-2. 게시글 정보 반환 메서드 int seq BoardDTO dto
BoardDTO view(int seq) throws SQLException;
// 4. 게시글 삭제 메서드
int delete(int seq) throws SQLException;
// 5. 게시글 수정 메서드
int update(BoardDTO dto) throws SQLException;
// 6. 검색 메서드
ArrayList<BoardDTO> search(int searchCondition, String searchWord) throws SQLException;
} // interface
4.BoardDAO를 implements하는 BoardDAOImpl 클래스 생성
게시글을 조회하는 select()
insert(BoardDTO dto)
매개변수가 Board인 이유
글쓰기 페이지에서 입력받은 값을 가지고 컨트롤러를 거쳐 BoardDTO dto객체를 만들것
그럼 모든 정보를 가진 dto객체가 컨트롤러에서 만들어져 그걸 서비스 계층으로 넘겨지고
실제 DAO 객체에까지 전달해짐 그래서 매개변수가 BoardDTO
MVC패턴때문에 글쓰기 작업할때 모든 입력값을 dto객체로 만들어 DAO.insert()전달
package days04.board;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class BoardDAOImpl implements BoardDAO {
// 필드
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
// 생성자
public BoardDAOImpl() {}
// 1. 생성자를 통해서 의존성 주입( DI )
public BoardDAOImpl( Connection conn ){
this.conn = conn;
}
// 2. setter 를 통해서 의존성 주입( DI )
public void setConn( Connection conn ) {
this.conn = conn;
}
@Override
public ArrayList<BoardDTO> select() throws SQLException {
ArrayList<BoardDTO> list = null;
BoardDTO dto = null;
int seq;
String writer;
String email;
String title;
Date writedate;
int readed;
String sql = "SELECT seq, writer, email, title, readed , writedate "
+ "FROM tbl_cstvsboard "
+ "ORDER BY seq DESC";
//System.out.println( sql );
this.pstmt = this.conn.prepareStatement(sql);
this.rs = this.pstmt.executeQuery();
if( this.rs.next() ) {
list = new ArrayList<BoardDTO>();
do {
seq = this.rs.getInt("seq");
writer = this.rs.getString("writer");
email = this.rs.getString("email");
title = this.rs.getString("title");
writedate = this.rs.getDate("writedate");
readed = this.rs.getInt("readed");
dto = new BoardDTO(seq, writer, email, title, writedate, readed);
list.add(dto);
} while ( this.rs.next() );
} // if
this.rs.close();
this.pstmt.close();
return list;
}
@Override
public int insert(BoardDTO dto) throws SQLException {
int rowCount = 0;
String sql = "INSERT INTO tbl_cstvsboard (seq, writer, pwd, email, title, tag, content) "
+ "VALUES (SEQ_TBL_CSTVSBOARD.NEXTVAL, ?, ?, ? , ? , ? , ? )";
this.pstmt = this.conn.prepareStatement(sql);
// writer, pwd, email, title, tag, content
// ?, ?, ? , ? , ? , ? 파라미터 설정.
this.pstmt.setString(1, dto.getWriter() );
this.pstmt.setString(2, dto.getPwd() );
this.pstmt.setString(3, dto.getEmail() );
this.pstmt.setString(4, dto.getTitle() );
this.pstmt.setInt(5, dto.getTag());
this.pstmt.setString(6, dto.getContent() );
rowCount = this.pstmt.executeUpdate(); // 자동 커밋
this.pstmt.close();
return rowCount;
}
@Override
public void increaseReaded(int seq) throws SQLException {
String sql = "UPDATE tbl_cstvsboard "
+" SET readed = readed + 1 "
+" WHERE seq = ? ";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, seq); // WHERE seq = ?
int rowCount = this.pstmt.executeUpdate();
this.pstmt.close();
}
@Override
public BoardDTO view(int seq) throws SQLException {
String sql = "SELECT seq, writer, email, title, readed , writedate , content "
+ " FROM tbl_cstvsboard "
+ " WHERE seq = ? ";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, seq); // WHERE seq = ?
this.rs = this.pstmt.executeQuery();
BoardDTO dto = null;
if ( this.rs.next() ) {
dto = new BoardDTO();
dto.setSeq(seq);
dto.setWriter(this.rs.getString("writer"));
dto.setEmail(this.rs.getString("email"));
dto.setTitle(this.rs.getString("title"));
dto.setReaded(this.rs.getInt("readed"));
dto.setWritedate(this.rs.getDate("writedate"));
dto.setContent(this.rs.getString("content"));
}
this.rs.close();
this.pstmt.close();
return dto;
}
@Override
public int delete(int seq) throws SQLException {
String sql = "DELETE FROM tbl_cstvsboard "
+ " WHERE seq = ? ";
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setInt(1, seq);
int rowCount = this.pstmt.executeUpdate();
this.pstmt.close();
return rowCount;
}
// seq, title, email, content
@Override
public int update(BoardDTO dto) throws SQLException {
String sql = "UPDATE tbl_cstvsboard "
+" SET email=?, title=?, content=? "
+" WHERE seq = ?";
int rowCount = 0;
this.pstmt = this.conn.prepareStatement(sql);
// ? ? ? ?
this.pstmt.setString(1, dto.getEmail() );
this.pstmt.setString(2, dto.getTitle() );
this.pstmt.setString(3, dto.getContent() );
this.pstmt.setInt(4, dto.getSeq() );
rowCount = this.pstmt.executeUpdate();
this.pstmt.close();
return rowCount;
}
@Override
public ArrayList<BoardDTO> search(int searchCondition, String searchWord) throws SQLException {
// select() 메서드의 모든 코딩 복사 + 붙이기
ArrayList<BoardDTO> list = null;
BoardDTO dto = null;
int seq;
String writer;
String email;
String title;
Date writedate;
int readed;
String sql = "SELECT seq, writer, email, title, readed , writedate "
+ "FROM tbl_cstvsboard ";
switch ( searchCondition) {
case 1: // 제목
sql += " WHERE REGEXP_LIKE(title, ? , 'i') ";
break;
case 2: // 내용
sql += " WHERE REGEXP_LIKE(content, ? , 'i') ";
break;
case 3: // 작성자
sql += " WHERE REGEXP_LIKE(writer, ? , 'i') ";
break;
case 4: // 제목 + 내용
sql += " WHERE REGEXP_LIKE(title, ? , 'i') OR REGEXP_LIKE(content, ? , 'i') ";
break;
}
sql += " ORDER BY seq DESC";
//System.out.println( sql );
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setString(1, searchWord); // 1,2,3,4
if( searchCondition == 4)
this.pstmt.setString(2, searchWord);
this.rs = this.pstmt.executeQuery();
if( this.rs.next() ) {
list = new ArrayList<BoardDTO>();
do {
seq = this.rs.getInt("seq");
writer = this.rs.getString("writer");
email = this.rs.getString("email");
title = this.rs.getString("title");
writedate = this.rs.getDate("writedate");
readed = this.rs.getInt("readed");
dto = new BoardDTO(seq, writer, email, title, writedate, readed);
list.add(dto);
} while ( this.rs.next() );
} // if
this.rs.close();
this.pstmt.close();
return list;
}
} // class
5.서비스를 담당하는 SERVICE 객체 생성 - BoardService
BoardController -> BoardService -> BoardDAOImpl-> 오라클서버
입력받은 정보가 BoardDTO에 담겨져서 서비스까지 넘어 온다
1) 로그기록
2) dao.insert()
3) 암호화
4) 작성자 포인트 1증가
등 글쓰기 작업에 다른 작업이 붙을 수 있음
package days04.board;
import java.sql.SQLException;
import java.util.ArrayList;
// BoardController -> BoardService -> BoardDAOImpl-> 오라클서버
//
public class BoardService {
private BoardDAO dao = null;
// 1. 생성자 DI
public BoardService( BoardDAO dao ) {
this.dao = dao;
}
// 2. Setter DI
public void setDao(BoardDAO dao) {
this.dao = dao;
}
// 1. 게시글 목록 서비스 메서드
public ArrayList<BoardDTO> selectService(){
ArrayList<BoardDTO> list = null;
try {
// 1. 로그 기록 서비스
System.out.println("> 게시글 목록 조회 -> 로그 기록 작업...");
// 2. 게시글 목록
list = this.dao.select();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
// 2. 게시글 추가 서비스 메서드
public int insertService( BoardDTO dto) {
int rowCount = 0;
try {
// 트랜잭션 처리 시작
// 1. 로그 기록 서비스
System.out.println("> 게시글 추가 -> 로그 기록 작업...");
// 2. 게시글 추가
rowCount = this.dao.insert(dto);
// 3. 작성자 포인터 1증가
// this.dao.updatePoint(작성자)
// 트랜잭션 처리 종료
} catch (SQLException e) {
e.printStackTrace();
}
return rowCount;
}
// 3 해당 게시글 상세보기 서비스 메서드
// - 해당 게시글 조회수 증가
// - 해당 게시글 dto
public BoardDTO viewService( int seq ){
BoardDTO dto = null;
try {
// 트랜잭션 시작
// 1.
this.dao.increaseReaded(seq);
// 2.
dto = this.dao.view(seq);
// 3.
System.out.println("> 게시글 상세보기 -> 로그 기록 작업...");
// 트랜잭션 종료
} catch (SQLException e) {
e.printStackTrace();
}
return dto;
}
public int deleteService(int seq) {
int rowCount = 0;
try {
// 트랜잭션 시작
rowCount = dao.delete(seq);
System.out.println("> 게시글 삭제 -> 로그 기록 작업...");
// 트랜잭션 종료
} catch (SQLException e) {
e.printStackTrace();
}
return rowCount;
}
public int updateService(BoardDTO dto) {
int rowCount = 0;
try {
// 트랜잭션 시작
rowCount = dao.update( dto );
System.out.println("> 게시글 수정 -> 로그 기록 작업...");
// 트랜잭션 종료
} catch (SQLException e) {
e.printStackTrace();
}
return rowCount;
}
public ArrayList<BoardDTO> searchService(int searchCondition, String searchWord) {
// selectService() 메서드의 모든 코딩 복사 + 붙이기
ArrayList<BoardDTO> list = null;
try {
// 1. 로그 기록 서비스
System.out.println("> 게시글 검색 목록 조회 -> 로그 기록 작업...");
// 2. 게시글 목록
list = this.dao.search(searchCondition, searchWord);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
} // class
6. 모든 처리가 이루어지는 controller 생성 - BoardController
package days04.board;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
import com.util.DBconn;
public class BoardController {
private Scanner scanner = null;
private int selectedNumber;
private BoardService service = null;
public BoardController() {
this.scanner = new Scanner(System.in);
}
public BoardController( BoardService service ) {
this();
this.service = service;
}
public void start() {
while(true) {
메뉴출력();
메뉴선택();
메뉴처리();
} // while
} // start
private void 메뉴처리() {
switch (this.selectedNumber) {
case 1: // 새글
새글쓰기();
break;
case 2: // 목록
목록보기();
break;
case 3: // 보기
상세보기();
break;
case 4: // 수정
수정하기();
break;
case 5: // 삭제
삭제하기();
break;
case 6: // 검색
검색하기();
break;
case 7: // 종료
exit();
break;
} // switch
} //
private void 검색하기() {
// 검색조건 : 제목(1), 내용(2), 작성자(3), 제목+내용(4)
int searchCondition; // 검색조건
System.out.print("> 검색 조건 : 제목(1) , 내용(2), 작성자(3), 제목+내용(4) 선택 ? ");
searchCondition = this.scanner.nextInt();
System.out.print("> 검색어 입력 ? ");
String searchWord = this.scanner.next();
// 목록보기() 모든 코딩 복사 + 붙이기
ArrayList<BoardDTO> list = this.service.searchService(searchCondition, searchWord);
// 뷰(View) - 출력 담당
System.out.println("\t\t\t 게시판");
System.out.println("--------------------------------------------------------------");
System.out.printf("%s\t%-40s\t%s\t%-10s\t%s\n",
"글번호","글제목","글쓴이","작성일","조회수");
System.out.println("--------------------------------------------------------------");
if ( list == null) {
System.out.println("\t\t > 게시글 존재 X ");
} else {
Iterator<BoardDTO> ir = list.iterator();
while (ir.hasNext()) {
BoardDTO dto = ir.next();
System.out.printf("%d\t%-30s %s\t%-10s\t%d\n",
dto.getSeq(),
dto.getTitle(),
dto.getWriter(),
dto.getWritedate(),
dto.getReaded());
}
}
System.out.println("--------------------------------------------------------------");
System.out.println("\t\t\t [1] 2 3 4 5 6 7 8 9 10 >"); // 페이징블럭
System.out.println("--------------------------------------------------------------");
일시정지();
}
private void 수정하기() {
// 1 hong@nave.com 첫_번째_게시글 냉무
System.out.print("> 수정할 게시글 글번호(seq), email, title, content 를 입력 ? ");
int seq = Integer.parseInt( this.scanner.next() );
//
BoardDTO dto = this.service.viewService(seq);
if( dto == null ) {
System.out.println("> 해당 게시글 존재 X");
return ;
}
// 해당 게시글 정보 출력( View 담당)
System.out.println("\tㄱ. 글번호 : " + seq );
System.out.println("\tㄴ. 작성자 : " + dto.getWriter() );
System.out.println("\tㄷ. 조회수 : " + dto.getReaded() );
System.out.println("\tㄹ. 글제목 : " + dto.getTitle() );
System.out.println("\tㅁ. 글내용 : " + dto.getContent() );
System.out.println("\tㅂ. 작성일 : " + dto.getWritedate() );
//
String email = this.scanner.next();
String title = this.scanner.next();
String content = this.scanner.next();
dto = new BoardDTO();
dto.setSeq(seq);
dto.setTitle(title);
dto.setEmail(email);
dto.setContent(content);
int rowCount = this.service.updateService( dto );
if( rowCount == 1 ) {
System.out.printf("> %d 수정 완료\n", seq);
}
일시정지();
}
private void 삭제하기() {
System.out.print("> 삭제할 게시글 글번호(seq)를 입력 ? ");
int seq = this.scanner.nextInt();
int rowCount = this.service.deleteService(seq);
if( rowCount == 1 ) {
System.out.printf("> %d 게시글 삭제 완료!!!\n", seq);
}
일시정지();
}
private void 상세보기() {
System.out.print("> 게시글 글번호(seq)를 입력 ? ");
int seq = this.scanner.nextInt();
//
BoardDTO dto = this.service.viewService(seq);
if( dto == null ) {
System.out.println("> 해당 게시글 존재 X");
return ;
}
// 해당 게시글 정보 출력( View 담당)
System.out.println("\tㄱ. 글번호 : " + seq );
System.out.println("\tㄴ. 작성자 : " + dto.getWriter() );
System.out.println("\tㄷ. 조회수 : " + dto.getReaded() );
System.out.println("\tㄹ. 글제목 : " + dto.getTitle() );
System.out.println("\tㅁ. 글내용 : " + dto.getContent() );
System.out.println("\tㅂ. 작성일 : " + dto.getWritedate() );
System.out.println("\t\n [수정] [삭제] [목록(home)]");
일시정지();
}
// 목록 페이지에서 "글쓰기" 버튼을 클릭
// 새글 정보 입력 -> dto -> DB INSERT
// 목록 페이지 출력
private void 새글쓰기() {
System.out.print("> writer, pwd, email, title, tag, content 입력 ? ");
// 함세강,1234,ham@sist.co.kr,세_번째_게시글,0,세_번째_게시글_내용
String [] datas = this.scanner.next().split(",");
String writer = datas[0];
String pwd = datas[1];
String email = datas[2];
String title = datas[3];
int tag = Integer.parseInt( datas[4] );
String content = datas[5];
BoardDTO dto = new BoardDTO();
dto.setWriter(writer);
dto.setPwd(pwd);
dto.setEmail(email);
dto.setTitle(title);
dto.setTag(tag);
dto.setContent(content);
int rowCount = this.service.insertService(dto);
if (rowCount == 1) {
System.out.println("> 새글 쓰기 완료!!!");
}
일시정지();
}
// 게시글 목록 조회 메서드
private void 목록보기() {
ArrayList<BoardDTO> list = this.service.selectService();
// 뷰(View) - 출력 담당
System.out.println("\t\t\t 게시판");
System.out.println("--------------------------------------------------------------");
System.out.printf("%s\t%-40s\t%s\t%-10s\t%s\n",
"글번호","글제목","글쓴이","작성일","조회수");
System.out.println("--------------------------------------------------------------");
if ( list == null) {
System.out.println("\t\t > 게시글 존재 X ");
} else {
Iterator<BoardDTO> ir = list.iterator();
while (ir.hasNext()) {
BoardDTO dto = ir.next();
System.out.printf("%d\t%-30s %s\t%-10s\t%d\n",
dto.getSeq(),
dto.getTitle(),
dto.getWriter(),
dto.getWritedate(),
dto.getReaded());
}
}
System.out.println("--------------------------------------------------------------");
System.out.println("\t\t\t [1] 2 3 4 5 6 7 8 9 10 >"); // 페이징블럭
System.out.println("--------------------------------------------------------------");
일시정지();
}
private void 일시정지() {
System.out.println(" \t\t 계속하려면 엔터치세요.");
try {
System.in.read();
System.in.skip(System.in.available()); // 13, 10
} catch (IOException e) {
e.printStackTrace();
}
}
private void exit() {
DBconn.close();
System.out.println("\t\t\t 프로그램 종료!!!");
System.exit(-1);
}
private void 메뉴선택() {
System.out.print("> 메뉴 선택하세요 ? ");
this.selectedNumber = this.scanner.nextInt();
}
private void 메뉴출력() {
String [] menus = { "새글","목록","보기","수정","삭제","검색","종료" };
System.out.println("[ 메뉴 ]");
for (int i = 0; i < menus.length; i++) {
System.out.printf("%d. %s\t", i+1, menus[i]);
}
System.out.println();
}
} // class
6.메인메소드가 있는 클래스에서 실행
package days04.board;
import java.sql.Connection;
import com.util.DBConn;
public class BoardTest {
public static void main(String[] args) {
Connection con = DBConn.getConnection();
BoardDAO dao = new BoardDAOImpl(con); //생성자DI
BoardService service = new BoardService(dao ); //생성자DI
BoardController controller = new BoardController(service); //생성자DI
controller.start();// start 메소드로 프로그램 시작
}
}
테스트
package days04.board.test;
import static org.junit.jupiter.api.Assertions.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import org.junit.jupiter.api.Test;
import com.util.DBconn;
import days04.board.BoardDAOImpl;
import days04.board.BoardDTO;
class BoardDAOImplTest {
/*
@Test
public void insert_test() {
Connection conn = DBconn.getConnection();
BoardDAOImpl dao = new BoardDAOImpl( conn );
try {
BoardDTO dto = new BoardDTO();
// writer, pwd, email, title, tag, content
dto.setWriter("홍길동");
dto.setPwd("1234");
dto.setEmail("hong@naver.com");
dto.setTitle("첫 번째 게시글");
dto.setTag(0); // 0 텍스트모드, 1 html 모드
dto.setContent( "첫 번째 게시글 내용..." );
int rowCount = dao.insert(dto);
if( rowCount == 1 ) {
System.out.println("> 새 게시글 작성 성공~~~");
}else {
System.out.println("> 새 게시글 작성 실패~~~");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBconn.close();
}
}
*/
@Test
public void select_test() {
Connection conn = DBconn.getConnection();
// 1. 생성자 DI
//BoardDAOImpl dao = new BoardDAOImpl( conn );
// 2. Setter DI
BoardDAOImpl dao = new BoardDAOImpl( );
dao.setConn(conn);
ArrayList<BoardDTO> list = null;
try {
list = dao.select();
if ( list == null) {
System.out.println("> 게시글이 존재 X");
} else {
Iterator<BoardDTO> ir = list.iterator();
while (ir.hasNext()) {
BoardDTO dto = ir.next();
System.out.println( dto );
}
} // if
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBconn.close();
}
} //
}
package days04.board.test;
import static org.junit.jupiter.api.Assertions.*;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Iterator;
import org.junit.jupiter.api.Test;
import com.util.DBconn;
import days04.board.BoardDAO;
import days04.board.BoardDAOImpl;
import days04.board.BoardDTO;
import days04.board.BoardService;
class BoardServiceTest {
@Test
void insertService_test() {
// 12:40 풀이
Connection conn = DBconn.getConnection();
BoardDAO dao = new BoardDAOImpl(conn);
BoardService service = new BoardService(dao);
BoardDTO dto = new BoardDTO();
// writer, pwd, email, title, tag, content
dto.setWriter("홍길동");
dto.setPwd("1234");
dto.setEmail("hong@naver.com");
dto.setTitle("두 번째 게시글");
dto.setTag(0); // 0 텍스트모드, 1 html 모드
dto.setContent( "두 번째 게시글 내용..." );
int rowCount = service.insertService(dto);
if( rowCount == 1 ) {
System.out.println("> 새 게시글 작성 성공~~~");
}else {
System.out.println("> 새 게시글 작성 실패~~~");
}
DBconn.close();
}
/*
@Test
void selectService_test() {
Connection conn = DBconn.getConnection();
BoardDAO dao = new BoardDAOImpl(conn);
BoardService service = new BoardService(dao);
ArrayList<BoardDTO> list = service.selectService();
if ( list == null) {
System.out.println("> 게시글이 존재 X");
} else {
Iterator<BoardDTO> ir = list.iterator();
while (ir.hasNext()) {
BoardDTO dto = ir.next();
System.out.println( dto );
}
} // if
DBconn.close();
}
*/
} // class
'JDBC' 카테고리의 다른 글
[JDBC] days05- CollableStatement (0) | 2022.05.10 |
---|---|
[JDBC] 페이징 처리 (0) | 2022.05.10 |
[JDBC] days02- (조회,수정,삭제,검색) (0) | 2022.05.04 |
[JDBC] days02 - 클래스 select (0) | 2022.05.03 |
[JDBC] days02-db에 연동하기 위한 클래스 라이브러리 생성 (0) | 2022.05.03 |