..열심히 공부하세../JSP

[26] PdsDTO와 PdsDAO

댄스댄스 2012. 3. 5. 11:42

 

파일명 : PdsDTO.java

------------------------------------------------------

package www.pds;

public class PdsDTO {
    /** 글 번호 */
    private int pdsno;
    /** 글 쓴이 */
    private String wname;
    /** 제목 */
    private String subject;
    /** 글 등록일 */
    private String regdate;
    /** 비밀번호 */
    private String passwd;
    /** 조회수 */
    private int readcnt;
    /** 파일명 */
    private String filename;
    /** 파일 사이즈 */
    private long filesize;

 
}

------------------------------------------------------

 

파일명 : PdsDAO.java

------------------------------------------------------

package www.pds;

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 www.utility.DBClose;

public class PdsDAO {
    /** 테이블 이름 */
    private String table_name="tb_pds";
   
    public PdsDAO() {
        super();
        // TODO Auto-generated constructor stub
    }
   
    /**
     * 전체 글 목록 가져오기
     * @return 검색된 파일 목록
     */
    public List list(Connection con)  throws SQLException{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        StringBuffer sql = null;       
        List list = new ArrayList();       
        sql = new StringBuffer();
       
        sql.append(" SELECT pdsno, wname, subject, regdate, readcnt,filename,filesize") ;
        sql.append(" FROM " + table_name);
        sql.append(" ORDER BY pdsno DESC");       
        pstmt = con.prepareStatement(sql.toString());
        rs = pstmt.executeQuery();
       
        while(rs.next() == true) {
            PdsDTO dto = new PdsDTO();          
            dto.setPdsno(rs.getInt("pdsno"));
            dto.setWname(rs.getString("wname"));
            dto.setSubject(rs.getString("subject"));
            dto.setRegdate(rs.getString("regdate"));
            dto.setReadcnt(rs.getInt("readcnt"));           
            dto.setFilename(rs.getString("filename"));
            dto.setFilesize(rs.getInt("filesize"));           
            list.add(dto);
        }
           
        DBClose.close(pstmt, rs);
       
        return list;
    }//end

    public int recordCount(Connection con) throws SQLException{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        StringBuffer sql = null;
        int retVal = 0;

        sql = new StringBuffer();
        sql.append(" SELECT count(*) as cnt");      
        sql.append(" FROM " + table_name);
              
        System.out.println("SQL: " + sql.toString());
       
        pstmt = con.prepareStatement(sql.toString());
        rs = pstmt.executeQuery();
       
        if(rs.next()){ // 레코드가 있는 경우 첫번째 레코드로 이동
            retVal = rs.getInt("cnt");
        }
           
        DBClose.close(pstmt, rs);
        return retVal;
    }
   
    /**
     * 레코드 추가하기
     * @param dto 데이터 객체
     * @return 추가 성공 - true, 추가실패 - false
     */
    public int create(Connection con, PdsDTO dto) throws SQLException{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        int retVal = 0;
                  
        StringBuffer sql = new StringBuffer();
        sql.append(" INSERT INTO " + table_name);
        sql.append(" (wname,subject,regdate,passwd,filename,filesize) ");
        sql.append(" VALUES(?,?,now(),?,?,?)");                 
        pstmt = con.prepareStatement(sql.toString());

        pstmt.setString(1, dto.getWname());
        pstmt.setString(2, dto.getSubject());
        pstmt.setString(3, dto.getPasswd());
        pstmt.setString(4, dto.getFilename());
        pstmt.setLong(5, dto.getFilesize());
       
        retVal = pstmt.executeUpdate();

        DBClose.close(pstmt);

        return retVal;
    }
}

------------------------------------------------------

 

파일명 : PdsMgr.java

------------------------------------------------------

package www.pds;
import java.sql.Connection;
import java.util.List;

import www.pds.PdsDAO;
import www.pds.PdsDAO;
import www.utility.ConnectionMgr;
import www.utility.DBClose;

public class PdsMgr {
    /** Connection Pool manager Class */
    private ConnectionMgr dbconnect = null;     
    private static PdsDAO dao = null;
   
    /**
     * 기본 생성자
     */
    public PdsMgr(){
        if (dbconnect == null){
            dbconnect = new ConnectionMgr();
        }
        System.out.println("dbconnect.hashCode(): " + dbconnect.hashCode());
       
        if (dao == null){
            dao = new PdsDAO();
        }
    }

    /**
     * DAO를 생성합니다.
     * @return
     */
    public synchronized PdsDAO getDAO(){
        if (dao == null){
            dao = new PdsDAO();           
        }

        return dao;
    }
   
    /**
     * 레코드 추가
     * @param dto 추가할 레코드 보관 객체
     * @return 성공 true, 실패 false
     */
    public boolean create(PdsDTO dto){
        Connection con = this.dbconnect.getConnection();
        boolean retVal = false;
        int cnt = 0;

        try{
            cnt = dao.create(con, dto);
            if (cnt == 1){
                retVal = true;
            }
        }catch(Exception e){
            System.out.println(e.toString());
        }finally{
            DBClose.close(con);
        }
       
        return retVal;
    } 
   
    /**
     * 데이터 목록 가져오기
     */
    public List list(){
        Connection con = this.dbconnect.getConnection();
        List list = null;

        try{
            list = dao.list(con);
        }catch(Exception e){
            System.out.println(e.toString());
        }finally{
            DBClose.close(con);
        }
  
        return list;       
    }

    public int recordCount(){
        Connection con = this.dbconnect.getConnection();
        int retVal=0;
       
        try{
            retVal=getDAO().recordCount(con);
        }catch(Exception e){
            System.out.println(e.toString());
        }finally{
            DBClose.close(con);
        }
 
        return retVal;
    }
}
-----------------------------------------------------------

------------------------------------------------------