IMemberDao / MemberDaoImpl : SQL문을 DB서버에 보내 실행 결과를 얻어오는 역할

DAO의 interface

package kr.or.ddit.mvc.dao;

import java.util.List;

import kr.or.ddit.mvc.vo.MemberVO;

/**
 * 
 * 실제 DB서버에 연결해서 SQL문을 수행하여 결과를 작성해서
 * Service에 전달하는 DAO의 interface
 * 
 * @author PC-06
 *
 */
public interface IMemberDao {

	/**
	 * MemberVO에 담겨진 자료를 DB에 insert하는 메서드
	 * 
	 * @param memvo DB에 insert할 자료가 저장된 MemberVO객체
	 * @return insert 작업성공 : 1이상의 정수, insert 작업 실패 : 0 
	 */
	public int insertMember(MemberVO memvo);
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원 정보를 삭제하는 메서드
	 * @param memId 삭제할 회원ID
	 * @return 삭제성공 : 1, 삭제실패 : 0
	 */
	public int deleteMember(String memId);
	
	/**
	 * MemberVO 자료를 이용하여 회원 정보를 Update하는 메서드
	 * @param memvo update할 회원 정보가 저장된 MemberVO객체
	 * @return 수정성공 : 1, 수정실패 : 0
	 */
	public int updateMember(MemberVO memId);
	
	/**
	 * DB의 회원 테이블의 전체 레코드를 가져와서
	 * List에 담아서 변환하는 메서드 
	 * @return MemberVO객체를 담고 있는 List
	 */
	
	public List<MemberVO> getAllMember();
	
	/**
	 * 회원ID를 인수값으로 받아서 해당 회원테이블의 개수를 반환하는 메서드
	 * @param memId 검색할 회원ID
	 * @return 검색된 회원ID 개수
	 */
	
	public int getMemberCount(String memId);
}

MemberDaoImpl 클래스

package kr.or.ddit.mvc.dao;

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

import kr.or.ddit.mvc.vo.MemberVO;
import kr.or.ddit.util.DBUtil3;

public class MemberDaoImpl implements IMemberDao{

	@Override
	public int insertMember(MemberVO memvo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		int cnt = 0; //반환값을 저장할 변수
		
		try {
			conn = DBUtil3.getConnection();
			
			String sql = "insert into mymember "
					+ "(mem_id, mem_name, mem_pass, mem_tel, mem_addr) "
					+ "values(?, ?, ?, ?, ?) ";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memvo.getMem_id());
			pstmt.setString(2, memvo.getMem_name());
			pstmt.setString(3, memvo.getMem_pass());
			pstmt.setString(4, memvo.getMem_tel());
			pstmt.setString(5, memvo.getMem_addr());
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			cnt=0;
			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 deleteMember(String memId) {//id를 받아서 왔다고 생각해야됨
		Connection conn = null;
		PreparedStatement pstmt = null;

		int cnt = 0; //반환값을 저장할 변수
		
		try {
			conn = DBUtil3.getConnection();
			
			String sql = "delete from mymember where mem_id = ? ";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memId);
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			cnt = 0;
			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 updateMember(MemberVO memvo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		int cnt = 0;//반환값 변수
		
		try {
			conn = DBUtil3.getConnection();
			
			String sql = "update mymember "
					+ " set mem_name = ?, mem_pass = ?, mem_tel = ?, mem_addr = ? "
					+ " where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memvo.getMem_name());
			pstmt.setString(2, memvo.getMem_pass());
			pstmt.setString(3, memvo.getMem_tel());
			pstmt.setString(4, memvo.getMem_addr());
			pstmt.setString(5, memvo.getMem_id());
			
			cnt = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			cnt = 0;
			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<MemberVO> getAllMember() {
		Connection conn = null;
		Statement stmt = null;//매개변수가 없는 상황이라 이걸쓸수 있음
		ResultSet rs = null;
		
		List<MemberVO> memList = new ArrayList<>();
		//반환값이 저장될 변수 선언
		
		try {
			conn = DBUtil3.getConnection();
			
			String sql = "select * from mymember";
			
			stmt = conn.createStatement();
			
			rs = stmt.executeQuery(sql);
			
			while(rs.next()){
				// 반복처리 부분에서는 한 레코드의 데이터를 VO에 담고
				// 데이터가 저장된 VO를 List에 추가하는 작업을 진행한다.
				
				//1개의 레코드 값들을 VO에 저장하기
				MemberVO memVo = new MemberVO(); //VO객체 생성
				
				//한 레코드의 각  컬럼값들을 VO에 저장한다.(rs에 값을 가져와 memVO에 저장하는것)
				memVo.setMem_id(rs.getString("mem_id"));
				memVo.setMem_name(rs.getString("mem_name"));
				memVo.setMem_pass(rs.getString("mem_pass"));
				memVo.setMem_tel(rs.getString("mem_tel"));
				memVo.setMem_addr(rs.getString("mem_addr"));
			
				memList.add(memVo); //VO객체를 List에 추가한다
				
			}
			
		} catch (SQLException e) {
			memList = null;
			e.printStackTrace();
		}finally{
			if(rs!=null) try{ rs.close();   }catch(SQLException e){}
			if(stmt!=null) try{ stmt.close();   }catch(SQLException e){}
			if(conn!=null) try{ conn.close();   }catch(SQLException e){}
		}
		
		return memList;
	}

	@Override
	public int getMemberCount(String memId) {
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		int count = 0; //반환값 저장 변수
		
		try {
			conn = DBUtil3.getConnection();
			
			String sql = "select count(*) cnt from mymember "
					+" where mem_id = ?";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, memId);
			
			rs = pstmt.executeQuery();
			
			if(rs.next()){
				count = rs.getInt("cnt");
			}
			
		} catch (SQLException e) {
			count = 0;
			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 count;
	}

}

좋은 웹페이지 즐겨찾기