본문 바로가기
java

22.12.06 java & DB(Oracle) 연동_7 + 리턴유형(DTO 및 List 타입)

by SoulMania 2023. 2. 20.

[접근제한자][제어자] String[] getEmpName() {return ~;}
[접근제한자][제어자] List getEmpName() {return ~;}
[접근제한자][제어자] ArrayList getEmpName() {return ~;}

리턴타입 배열은 동일한 유형만 저장되기 때문에 리스트를 사용한다.
인터페이스 List나 List의 구현 클래스인 ArrayList를 사용 하는것이 좋다.


--->컬럼이 여러개 일경우에는 무조건 리턴유형 DTO로 처리!

221206.zip
0.01MB
리턴유형별 코드작업.txt
0.00MB
설명.txt
0.03MB


[접근제한자][제어자] DTO 메소드명(매개변수) {return ~;}
[접근제한자][제어자] Array[] 메소드명(매개변수) {return ~;}
[접근제한자][제어자] List<사원DTO> 메소드명(매개변수) {return ~;}
[접근제한자][제어자] ArrayList<사원DTO> 메소드명(매개변수) {return ~;}

return ArrayList<사원DTO>;

List<사원DTO> list = new ArrayList(); 또는
ArrayList<사원DTO> list = new ArrayList(); 또는

while(rs.next){
사원DTO 참조변수=new 사원DTO(rs.get데이터타입(컬럼명), rs.get데이터타입(컬럼명), rs.get데이터타입(컬럼명));
list.add(참조변수);

사원DTO 참조변수= new 사원DTO(7788, "홍길동", "1982/01/01", 3000);
사원DTO 참조변수= new 사원DTO(7790, "이순신", "1982/09/15", 4000);
사원DTO 참조변수= new 사원DTO(7700, "강감찬", "1988/12/25", 1500);
}

return list;

[접근제한자][제어자] 리턴유형 메소드명(매개변수) {return ~;}
[접근제한자][제어자] 사원DTO 메소드명(데이터타입 사원번호){

//리턴유형을 DTO로 넘기는 방법 2가지
//방법1. 기본생성자를 이용하여 객체를 생성하는경우
사원DTO 참조변수 = new 사원DTO();
데이터타입 변수명=rs.get데이터타입(컬럼명);
참조변수.set필드명(데이터타입 변수명); 
혹은
참조변수.set필드명(rs.get데이터타입(컬럼명));



//방법2. 파라미터가 있는 생성자를 이용하여 객체를 생성하는 경우
사원DTO 참조변수=new 사원DTO(rs.get데이터타입(컬럼명),
                        rs.get데이터타입(컬럼명),
                        rs.get데이터타입(컬럼명));





return 참조변수;

}


package db.ex4_1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

//DAO:Data Access Object. db 연동
//DAO란 DB연동하여 DB작업을 제공하는 클래스이다.
//이 클래스는 Board관련 DB작업을 제공하는 클래스이다.

//이 클래스에서는 매개변수로 NoticeBoardDTO를 사용+
// 리턴유형을 NoticeBoardDTO로 지정
public class NoticeBoardDAO {
//field

//constructor


//method

//1.목록조회 -->    public 게시글목록 getNoticeList() {
public List<NoticeBoardDTO> getNoticeList() {
    System.out.println("getNoticeList()진입");
    PreparedStatement pstmt = null;
    Connection conn = null;
    ResultSet rs = null;

    String sql =     "select nbno, title, centent, cre_date, writer, rcnt, empno " + 
                    "from notice " + 
                    "order by nbno desc";

    //1. 드라이버등록 --> 2. 커넥션 얻기 --> 3. 객체준비 --> 4. 실행 --> 5. 반납
    conn = JdbcUtil.getConnection();//1.드라이버등록 및 2.커넥션 얻기

    //인터페이스 타입 참조변수명 = new 구현클래스명();
    List<NoticeBoardDTO> list = new ArrayList();
    //클래스명 타입 참조변수명 = new 클래스명();
    //ArrayList<NoticeBoardDTO> list = new ArrayList();
    //3.객체준비 
        System.out.println("3. getNoticeList() 객체 준비");
    try {
        pstmt = conn.prepareStatement(sql);
        rs = pstmt.executeQuery(); //--> 위에서 이미 sql을 매개변수로 받아서 처리 하였으므로 매개변수 없는 것으로 처리한다.

    //4.실행
        /*rs.get데이터타입(select순서)
          rs.get데이터타입("컬럼명")*/
        System.out.println("4. getNoticeList() 실행");
        while(rs.next()) {
            int nbno = rs.getInt(1);
            String title = rs.getString(2);
            String centent = rs.getString(3);
            Date cre_date = rs.getDate(4);
            String writer = rs.getString(5);
            int rcnt = rs.getInt(6);
            int empno = rs.getInt(7);

            //방법1. 기본생성자를 이용하여 객체를 생성하는경우 (객체를 매번 반복문안에서 생성해야한다. 밖에서 생성하면 다른객체에 들어간다?)
            NoticeBoardDTO nbdto=new NoticeBoardDTO(); //기본생성자 이용시 setter메소드 이용필요 setter안쓰면 나머지 setter메소드 안쓴 필드값은 자동초기화
            nbdto.setNbno(nbno);
            nbdto.setTitle(title);
            nbdto.setCentent(centent);
            nbdto.setCre_date(cre_date);
            nbdto.setWriter(writer);
            nbdto.setRcnt(rcnt);
            nbdto.setEmpno(empno);

            //완성된 공지사항 게시판의 객체를 List에 추가한다.
            list.add(nbdto);

// System.out.println("----------------------------------------");
// System.out.printf("| %5d | %5s | %5s | %5s | \r\n----------------------------------------\r\n", nbno, title, cre_date, writer);
// System.out.println(" ");//줄바꿈
}//while문 끝
//System.out.println("4.쿼리실행결과 리턴받은 row수="+resultCnt);

    } catch (SQLException e) {
        e.printStackTrace();
    } 

    //5.반납
    System.out.println("5. getNoticeList() 메소드 자원반납 진행");
    JdbcUtil.close(pstmt);
    JdbcUtil.close(rs);
    JdbcUtil.close(conn);

    return list;



}//getNoticeList() 끝

// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================

//2.상세조회   -->public 게시글 getNotice(매개변수리스트) {
//리턴유형이 NoticeBoardDTO클래스

// public void getNotice(NoticeBoardDTO nbDTO) {//int nbno는 글번호
public NoticeBoardDTO getNotice(NoticeBoardDTO nbDTO) {//int nbno는 글번호
System.out.println("getNotice()진입 nbno="+nbDTO); //주소찍힌다.
System.out.println("getNotice()진입 nbno="+nbDTO.getNbno());
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
NoticeBoardDTO ntDTOobj = null;
//select결과로 받은 컬럼의 값들을 NoticeBoardDTO()객체로 만들기 위해 선언한 변수 및 초기화

    String sql =     "select nbno, title, centent, cre_date, writer, rcnt, empno " + 
                    "from notice " + 
                    "where nbno = ?";

    //1. 드라이버등록 --> 2. 커넥션 얻기 --> 3. 객체준비 --> 4. 실행 --> 5. 반납
    conn = JdbcUtil.getConnection();//1.드라이버등록 및 2.커넥션 얻기

    //3.객체준비 
        System.out.println("3. getNoticeList() 객체 준비");
    try {
        pstmt = conn.prepareStatement(sql);
        //매개변수 nbDTO에는 NoticeBoardDTO 클래스의 객체주소가 저장되어있다.
        //nbDTO.getNbno():저장된 주소를 통해 getNono()메소드를 호출한다.
        /*pstmt.setInt(1, nbDTO.getNbno()):호출된 int타입의 값을 여기에서는 글번호를 가져와 1번째 ?의값으로 설정한다.*/
        pstmt.setInt(1, nbDTO.getNbno());
        rs = pstmt.executeQuery(); //--> 위에서 이미 sql을 매개변수로 받아서 처리 하였으므로 매개변수 없는 것으로 처리한다.

    //4.실행
        System.out.println("4. getNoticeList() 실행");
        if(rs.next()) {//select 결과로 record가 존재할 경우

            int no = rs.getInt(1);
            String title = rs.getString(2);
            String centent = rs.getString(3);
            Date cre_date = rs.getDate(4);
            String writer = rs.getString(5); 
            int rcnt = rs.getInt(6); 
            int empno = rs.getInt(7);  
            ntDTOobj =    new NoticeBoardDTO(no, title, centent, cre_date, writer, rcnt, empno);

            //이제 리턴유형을 NoticeBoardDTO로 선언하고 그 값을 객체로 만들었으니 메인에서 뿌리면 되서 아래 프린트문은 필요없다!!

// System.out.println("------------------------------------------------------------------");
// System.out.printf("| %5d | %5s | %5s | %5s | %5s | %5d | %5d | \r\n------------------------------------------------------------------\r\n", no, title, centent, cre_date, writer, rcnt, empno);
// System.out.println(" ");//줄바꿈
}else {//select 결과로 record가 존재하지않을 경우
System.out.println("조회한 글번호"+nbDTO.getNbno()+"에 해당하는 글이 존재하지 않아요");
}

    } catch (SQLException e) {
        e.printStackTrace();
    } 

    //5.반납
    System.out.println("5. getNoticeList() 메소드 자원반납 진행");
    JdbcUtil.close(pstmt);
    JdbcUtil.close(rs);
    JdbcUtil.close(conn);



    return ntDTOobj;

}//getNotice() 끝

// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================

//3.등록 - title 제목, centent 내용, 작성자명 writer
//리턴값 - 입력성공시 true, 실패시 false
//매개변수 - NoticeBoardDTO ntDTO에는 주소가 저장되면주소가 출력되고
//주소가 저장되어있지 않으면 NULL이 출력된다.
public boolean addNotice(NoticeBoardDTO ntDTO) {

// public boolean addNotice(String title, String centent, String writer) {
// System.out.printf("addNotice()진입 title:%s, centent:%s, writer:%s\r\n", title, centent, writer);

    //주소가 저장되어있지 않으면 NULL출력
    System.out.println("addNotice() ntdTO = "+ntDTO);//주소출력
    System.out.printf("addNotice()진입 title:%s, centent:%s, writer:%s\r\n", 
                        ntDTO.getTitle(), ntDTO.getCentent(), ntDTO.getWriter());

    PreparedStatement pstmt = null;
    Connection conn = null;

// ResultSet rs = null;
boolean result = false;

    String sql =     "insert into notice(nbno, title, centent, cre_date, writer, rcnt, empno) " + 
                    "values(notice_seq.nextval, ?, ?, SYSDATE, ?, 0,7900)";

    //1. 드라이버등록 --> 2. 커넥션 얻기 --> 3. 객체준비 --> 4. 실행 --> 5. 반납
    conn = JdbcUtil.getConnection();//1.드라이버등록 및 2.커넥션 얻기

    //3.객체준비 & 4.실행
        System.out.println("3. addNotice() 객체 준비");
    try {
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, ntDTO.getTitle());
        pstmt.setString(2, ntDTO.getCentent());
        pstmt.setString(3, ntDTO.getWriter());
        int resultcnt = pstmt.executeUpdate(); //--> 위에서 이미 sql을 매개변수로 받아서 처리 하였으므로 매개변수 없는 것으로 처리한다.
        System.out.println("4.쿼리실행결과 리턴받은 row수="+resultcnt);
        System.out.println("리턴되는 행수");
        if(resultcnt==1) {
            System.out.println("입력성공");
            result=true;
        }else {
            System.out.println("입력실패");
            result=false;
        }



    } catch (SQLException e) {
        e.printStackTrace();
    } 

    //5.반납
    System.out.println("5. addNotice() 메소드 자원반납 진행");
    JdbcUtil.close(pstmt);

// JdbcUtil.close(rs);
JdbcUtil.close(conn);

    return result;
}

// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================

//4.수정  - 글번호 nbno, title 제목, centent 내용, 작성자명 writer

// public int updateNotice(int nbno, String title, String centent, String writer) {

//매개변수 ntDTO에는 NoticeBoardDTO의 주소 또는 NULL저장
public int updateNotice(NoticeBoardDTO ntDTO) {

// System.out.printf("updateNotice()진입 nbno:%d, title:%s, centent:%s, writer:%s\r\n", nbno, title, centent, writer);

    //주소가 저장되어있지 않으면 NULL출력
    System.out.println("updateNotice() ntDTO = "+ntDTO);//주소출력
    System.out.printf("updateNotice()진입 nbno:%d, title:%s, centent:%s, writer:%s\r\n", 
                        ntDTO.getNbno(), ntDTO.getTitle(), ntDTO.getCentent(), ntDTO.getWriter());


    PreparedStatement pstmt = null;
    Connection conn = null;
    int resultcnt = 0;

// ResultSet rs = null;

    String sql =     "update notice set title=?, centent=?, writer=? " + 
                    "where nbno=?";

    //1. 드라이버등록 --> 2. 커넥션 얻기 --> 3. 객체준비 --> 4. 실행 --> 5. 반납
    conn = JdbcUtil.getConnection();//1.드라이버등록 및 2.커넥션 얻기

    //3.객체준비 & 4.실행
        System.out.println("3. updateNotice() 객체 준비");
    try {
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, ntDTO.getTitle());
        pstmt.setString(2, ntDTO.getCentent());
        pstmt.setString(3, ntDTO.getWriter());
        pstmt.setInt(4, ntDTO.getNbno());
        resultcnt = pstmt.executeUpdate(); //--> 위에서 이미 sql을 매개변수로 받아서 처리 하였으므로 매개변수 없는 것으로 처리한다.
        System.out.println("4.쿼리실행결과 리턴받은 row수="+resultcnt);
        if(resultcnt>=1) {
            System.out.println("수정성공");
        }else {
            System.out.println("수정실패");
        }





    } catch (SQLException e) {
        e.printStackTrace();
    } 

    //5.반납
    System.out.println("5. updateNotice() 메소드 자원반납 진행");
    JdbcUtil.close(pstmt);

// JdbcUtil.close(rs);
JdbcUtil.close(conn);

    return resultcnt;
}

// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================
// ======================================================================================================================

//5.삭제 - nbno 글번호
/*리턴유형 int - delete 실행시 리턴되는 행수*/
public int delNotice(NoticeBoardDTO ntDTO) {
//public int delNotice(int nbno) {
    //참조변수 ntDTO에는 주소가 저장되었다.
    System.out.println("delNotice()진입 참조변수ntDTO="+ntDTO); //주소출력
    System.out.println("delNotice()진입 참조변수ntDTO="+ntDTO.getNbno()); //글번호 출력

// System.out.println("delNotice()진입 nbno="+nbno);
PreparedStatement pstmt = null;
Connection conn = null;
int resultcnt = 0;//delete실행시 리턴되는 행수를 저장하기위한변수선언 및 초기화
// ResultSet rs = null;

    String sql =     "delete from notice where nbno=?";

    //1. 드라이버등록 --> 2. 커넥션 얻기 --> 3. 객체준비 --> 4. 실행 --> 5. 반납
    conn = JdbcUtil.getConnection();//1.드라이버등록 및 2.커넥션 얻기

    //3.객체준비 & 4.실행
        System.out.println("3. delNotice() 객체 준비");
    try {
        pstmt = conn.prepareStatement(sql);
        pstmt.setInt(1, ntDTO.getNbno()); //1번째 ?에 글번호
        resultcnt = pstmt.executeUpdate();
        System.out.println("4.쿼리실행결과 리턴받은 row수="+resultcnt);
        //여기에서는 삭제성공하면 1리턴
        //여기에서는 삭제실패하면 0리턴
        if(resultcnt>=1) {
            System.out.println("삭제성공");
        }else {
            System.out.println("삭제실패");
        }

    } catch (SQLException e) {
        e.printStackTrace();
    } 

    //5.반납
    System.out.println("5. delNotice() 메소드 자원반납 진행");
    JdbcUtil.close(pstmt);

// JdbcUtil.close(rs);
JdbcUtil.close(conn);

    return resultcnt;

}

}


package db.ex4_1;

import java.util.List;
import java.util.Scanner;

//메인클래스

~

!
//web에서는 불필요한 부분

public class Main {

public static void main(String[] args) {
    NoticeBoardDAO ntBoardDAO = new NoticeBoardDAO();//DAO객체 생성
    Scanner sc = new Scanner(System.in);
    while(true){
        System.out.println();
        System.out.println();
        System.out.println("----------------------------------------------------");
        System.out.println("| 1.목록조회 | 2.상세조회 | 3.등록 | 4.수정 | 5.삭제 | 6.종료 |");
        System.out.println("----------------------------------------------------");
        System.out.print("위 리스트 중에 원하는 메뉴번호를 입력하세요. : ");
        int num = sc.nextInt(); //Scans the next token of the in

        if(num==1) {//1. 목록조회
            //타입  변수명 = ntBoardDAO.getNoticeList();
            List<NoticeBoardDTO> ntDTOList = ntBoardDAO.getNoticeList();


            System.out.println("총 게시글수 : "+ntDTOList.size()); //주소

            for(int i=0; i<ntDTOList.size();i++) {

                //여튼 셋다 먹는다.
                System.out.println(ntDTOList.get(i)); //toString 재정의하면 얘가 왜먹지?
                System.out.println();
                System.out.println();
                System.out.println();
                System.out.println();
                System.out.println();
                System.out.println(ntDTOList.toString());//toString 재정의하면 얘가 왜먹지?
                System.out.println();
                System.out.println();
                System.out.println();
                System.out.println();
                System.out.println();
                System.out.println(ntDTOList);//toString 재정의하면 얘가 왜먹지?

// System.out.println("----------------------------------------");
// System.out.printf("| %5d | %5s | %5s | %5s | \r\n----------------------------------------\r\n", nbno, title, cre_date, writer);

            }





        }else if(num==2) {//2. 상세조회
            System.out.print("조회할 글번호:");
            int nbno = sc.nextInt(); //user로부터 글번호를 입력받아 nbno변수에 저장

            //매개변수에 NoticeBoardDTO클래스의 객체주소를 넘겨준다.
            NoticeBoardDTO nbDTO = new NoticeBoardDTO(nbno); //매개변수의 주소를 넘기기 위한것

// ntBoardDAO.getNotice(nbDTO);

            //리턴유형이 NoticeBoardDTO클래스인 getNotice()호출
            NoticeBoardDTO resultNTDTO = ntBoardDAO.getNotice(nbDTO); //리턴유형을 담기위한 결과물 즉 리턴되어지는 값을 받기 위해서 선언하는것.

            //콘솔에 리턴받은 NoticeBoardDTO 객체내용을 출력
            System.out.println("리턴받은 NoticeBoardDTO = "+resultNTDTO); //주소
            System.out.println("리턴받은 NoticeBoardDTO = "+resultNTDTO.getNbno()); //리턴받은 주소값에서 마음대로 데이타값을 추출해서 본다.

// "select nbno, title, centent, cre_date, writer, rcnt, empno "
// System.out.printf("| %5d | %5s | %5s | %5s | %5s | %5d | %5d | \r\n------------------------------------------------------------------\r\n", no, title, centent, cre_date, writer, rcnt, empno);
// System.out.println("--아래는 특정글번호의 상세내용이 컬럼별 한줄로 출력");
// System.out.println("--nbno컬럼값:"+resultNTDTO.getNbno());
// System.out.println("--title컬럼값:"+resultNTDTO.getTitle());
// System.out.println("--centent컬럼값:"+resultNTDTO.getCentent());
// System.out.println("--cre_date컬럼값:"+resultNTDTO.getCre_date());
// System.out.println("--writer컬럼값:"+resultNTDTO.getWriter());
// System.out.println("--rcnt컬럼값:"+resultNTDTO.getRcnt());
// System.out.println("--empno컬럼값:"+resultNTDTO.getEmpno());
// System.out.println("---------------------------------");
System.out.println("------------------------------------------------------------------");
System.out.printf("| %5d | %5s | %5s | %5s | %5s | %5d | %5d | \r\n------------------------------------------------------------------\r\n",
resultNTDTO.getNbno(), resultNTDTO.getTitle(), resultNTDTO.getCentent(), resultNTDTO.getCre_date(), resultNTDTO.getWriter(), resultNTDTO.getRcnt(), resultNTDTO.getEmpno());

        }else if(num==3) {//3. 등록
            System.out.println("등록정보를 입력하세요.");
            System.out.println("제목 : ");
            String title = sc.next();
            System.out.println("내용 : ");
            String centent = sc.next();
            System.out.println("작성자 : ");
            String writer = sc.next();

// ntBoardDAO.addNotice(title, centent, writer);
// boolean insertResult = ntBoardDAO.addNotice(title, centent, writer); //리턴타입이 있는 형태의 메소드로 변경해줄수 있다 !! boolean
// System.out.println("insertResult = "+insertResult);

            //NoticeBoardDTO타입의 객체를 생성해서 제시하자
            NoticeBoardDTO nbDTOobj= new NoticeBoardDTO();
            //user로부터 입력받은 제목, 내용 작성자를 
            //NoticeBoardDTO의  Setter를 호출하여 설정한 후
            nbDTOobj.setTitle(title);
            nbDTOobj.setCentent(centent);
            nbDTOobj.setWriter(writer);   
            //매개변수가 없는 기본 생성자를 사용하였기 때문에 기본적으로 DTO에 있는 필드값들은 null로 초기화 되었고 title은 Not null 값이기 때문에 에러가 난다.
            //그래서 메인에서 입력받은 값을 setter로 받아서 처리해야한다.

            //ntBoardDAO.addnotice()를 호출하면서 넘기자                
            boolean insertResult = ntBoardDAO.addNotice(nbDTOobj);
            System.out.println("updateNotice() 실행결과 = "+insertResult);


        }else if(num==4) {//4. 수정
            System.out.println("수정할 정보를 입력하세요.");
            System.out.println("수정할 글번호 : ");
            int nbno = sc.nextInt();
            System.out.println("제목 : ");
            String title = sc.next();
            System.out.println("내용 : ");
            String centent = sc.next();
            System.out.println("작성자 : ");
            String writer = sc.next();

            //외부에서 클래스명 참조변수 = new 클래스명();
            NoticeBoardDTO nbDTOobj= new NoticeBoardDTO();

            //필드값을 설정해서 ntBoardDAO의 updateNotice()호출시 넘긴다.
            nbDTOobj.setTitle(title);
            nbDTOobj.setCentent(centent);
            nbDTOobj.setWriter(writer);
            nbDTOobj.setNbno(nbno); 

            int resultRowCnt = ntBoardDAO.updateNotice(nbDTOobj);
            //업데이트 성공하면 true리턴 , 업데이트 실패하면 false리턴
            System.out.println("resultRowCnt = "+resultRowCnt);



        }else if(num==5) {//5. 삭제
            System.out.print("삭제할 글번호:");
            int nbno = sc.nextInt(); //user로부터 글번호를 입력받아 nbno변수에 저장
            //delNotice() 호출시 NoticeBoardDTO클래스 타입의 객체주소를 넘겨야한다.
            //객체생성 클래스명 참조변수=new 클래스명(int 글번호);
            //객체생성 NoticeBoardDTO 참조변수 = new NoticeBoardDTO(nbno);
            NoticeBoardDTO nbDTO = new NoticeBoardDTO(nbno);
            int resultRowCnt = ntBoardDAO.delNotice(nbDTO);

// int resultRowCnt = ntBoardDAO.delNotice(nbno);
System.out.println("resultRowCnt = "+resultRowCnt);
}else if(num==6) {//6. 종료
break; //반복문 while 종료
}else {
System.out.println("기타-잘못된 번호");
}
}//while 문 종료6
System.out.println("종료합니다.!!!");

    //db연결테스트

// Connection conn = JdbcUtil.getConnection();
// 클래스명 참조변수 = new 클래스명();
// 참조변수.메소드();

    //전체목록 조회

// JdbcUtil.close(conn);

}

}


package db.ex4_1;

import java.util.Date;

/*

  • DTO(Data Transfer Object)
    • 순수하게 데이터를 담아 계층 간으로 전달하는 객체이다.
    • 로직을 갖고 있지 않은 순수한 데이터 객체이며 메서드로는 getter/setter 만을 갖는다.
    • 여기서 getter/setter 이외에 다른 로직이 필요 없는 이유를 좀 더 자세히 살펴보자면,
      만약 DTO가 데이터 전달 만을 위한 객체라고 한다면
      완전히 데이터 '전달' 용도로만 사용하기 때문에
      getter/setter로직만이 필요하지 다른 로직이 필요하지 않은 것이다.
  • */

//이 클래스는 DB의 noticeBoard테이블의 데이터를 저장, 제공하는 역할을 하는 DTO클래스이다.
public class NoticeBoardDTO {

//field : 변수 초기화 및 전역변수 설정, 데이터 저장
//[접제][제] 데이터타입  필드명[=초기값]
//초기값을 생략하면 데이터타입별로 자동초기화 된다.
//(정수 = 0, 실수 = 0.0, boolean = false, char = 공백
    //-->프리미티브타입 
//배열,클래스, : null(힙영역안에 참조주소가 있는 타입)  
    //--> 레퍼런스타입

private int nbno = 0;            //글번호
private String title = null;    //제목
private String centent = null;    //내용
private Date cre_date = null;    //작성일
private String writer = null;    //작성자
private int rcnt = 0;            //조회수
private int empno = 0;            //사원번호(여기에서는 공지사항게시판을 관리하는 사원번호)




//constructor
    //[접제][제] 클래스명 (매개변수){}
    //외부에서 클래스명 참조변수 = new 클래스명();
    public NoticeBoardDTO(){}//default constructor

    //외부에서 클래스명 참조변수 = new 클래스명(글번호);        
    public NoticeBoardDTO(int nbno){
        this.nbno = nbno;
    }

    //외부에서 클래스명 참조변수 = new 클래스명(글번호, ~,~,~,~,~, 사번){};
    public NoticeBoardDTO(int nbno, String title, String centent, Date cre_date, String writer, int rcnt, int empno){
        this.nbno = nbno;
        this.title = title;
        this.centent = centent;
        this.cre_date = cre_date;
        this.writer = writer;
        this.rcnt = rcnt;
        this.empno = empno;
    }



//getter setter는 ch07챕터에 machine01 클래스나 student01 클래스에 사용했던 방법이 잘 나와있다 .
    //생성자 이용해서 초기에 객체 생성시에 입력값을 세팅할 수도 있으나 getter setter의 메소드를 미리 선언해서 사용하면 그 이후에 값을 세팅하고 불러올 수 있다.
    //여기에서 필드 데이터를 하나하나 선언해서 메소드화하여 사용할 수도 있고 getinfo, setinfo 와 같이 한번에 세팅하고 한번에 불러올수있도록 메소드를 만들 수도 있다.


    //getter!!!
public int getNbno() {
    return nbno;
}
public String getTitle() {
    return title;
}
public String getCentent() {
    return centent;
}
public Date getCre_date() {
    return cre_date;
}
public String getWriter() {
    return writer;
}
public int getRcnt() {
    return rcnt;
}
public int getEmpno() {
    return empno;
}


//setter!!!
public void setNbno(int nbno) {
    this.nbno = nbno;
}
public void setTitle(String title) {
    this.title = title;
}
public void setCentent(String centent) {
    this.centent = centent;
}
public void setCre_date(Date cre_date) {
    this.cre_date = cre_date;
}
public void setWriter(String writer) {
    this.writer = writer;
}
public void setRcnt(int rcnt) {
    this.rcnt = rcnt;
}
public void setEmpno(int empno) {
    this.empno = empno;
}



//ObJect로부터 상속받은 toString()은
//객체의 정보를 String형태로 제공하는 메소드였다
//하지만 이 클래스에서는 
//필드의 값을 String형태로 제공하는 메소드로 재정의 하였다.   객체를 생성한 클래스에서 메소드가 재정의되어있다면 그 동작이 실행된다.

// @Override
// public String toString() {
// return "NoticeBoardDTO [nbno=" + nbno + ", title=" + title + ", centent=" + centent + ", cre_date=" + cre_date
// + ", writer=" + writer + ", rcnt=" + rcnt + ", empno=" + empno + "]";
// }

//method
//[접제][제] 리턴유형 메소드명(매개변수){}


//getter



/*
public 리턴유형 get필드명() {
    return ~;
}

setter
public void set필드명(매개변수) {
    필드=매개변수;
}


//setter
 */

}