• Home
  • About
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • All Posts
    • All Tags
    • All categories
  • categories
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • 정보처리기사
    • Spring
    • Thymeleaf
    • 기술면접
  • Projects

JAVA -JDBC 프로그래밍 - DAO 작성 및 구현클래스 작성(isMember(id),isMember(id,pw))

15 Mar 2021

🔷JDBC - DAO 작성 및 구현클래스 작성(isMember(id),isMember(id,pw))

  • DAO 구현클래스 작성
      package com.javateam.jdbc.member.dao.Impl;
    
      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 com.javateam.jdbc.member.dao.MemberDao;
      import com.javateam.jdbc.member.domain.MemberVo;
      import com.javateam.jdbc.member.util.DbUtil;
    
      /**
      * MemberDao의 구현 클래스(concrete class)<br><br>
      * 
      *
      * 용례) MemberDao dao = MemberdaoImpl.getInstance();<br>
      * : 싱클턴(singleton:독신자) 패턴 적용 &rarr; 보안<br><br>
      *  
      * @author mingki
      *
      */
      public class MemberDaoImpl implements MemberDao {
            
          /** DAO 객체 : 싱클턴(singleton) 생성 패턴 적용*/
          private static MemberDaoImpl instance = null;
          private MemberDaoImpl() {}
            
          /**
          * 싱글턴 객체(DAO singleton object) 생성 메서드 
          * 
          * @return DAO 객체
          */
          public static final MemberDaoImpl getInstance() {
              // final : 오버라이드 금지
                
              if(instance == null) {
                  instance = new MemberDaoImpl();
              }
              return instance;
          }
    
          @Override
          public boolean isMember(String memberId) {
                
              // 리턴(반환값) 처리
              boolean result = false;
                
              // 실행 메서드명
              String methodName = new Exception().getStackTrace()[0].getMethodName();
                
              // DB 연결
              Connection con = DbUtil.connect();
                
              // SQL 처리 객체
              PreparedStatement pstmt = null;
                
              // 결과셋 객체
              ResultSet rs = null;
                
              // SQL 구문
              // String sql = "SELECT * FROM member WHERE member_id =?"; // 1)
              // String sql = "SELECT count(1) FROM member WHERE member_id =?"; // (O)
              // 참고 : https://hue9010.github.io/db/select_count/
              String sql = "SELECT count(*) FROM member WHERE member_id =?";
    
              // SQL, 인자(선)처리
              try {
                  pstmt = con.prepareStatement(sql);
                    
                  pstmt.setString(1, memberId);
                    
                  // SQL 실행, 예외처리
                  rs = pstmt.executeQuery();
    
                  if(rs.next()) {
                      // rs.getString("member_Id"); // 1)
                        
                      // 1 : 존재, 0 : 없음
                      result = rs.getInt(1) == 1 ? true : false;
                      // result = true; // 1)
                  }				
                    
              } catch (SQLException e) {
                  System.out.println(methodName + " : " + e.getMessage());
                
                  // 자원반납
              }finally {
                  DbUtil.close(con, pstmt, rs);
              }
                    
              // 리턴(반환)
                
              return result;
          }
    
          @Override
          public String isMember(String memberId, String memberPassword) {
              // 리턴(반환값) 처리
              String result = "";
                
              // 실행 메서드명  
              String methodName = new Exception().getStackTrace()[0].getMethodName();
                
              // DB 연결
              Connection con = DbUtil.connect();
                
              // SQL 처리 객체
              PreparedStatement pstmt = null;
                
              // 결과셋 객체
              ResultSet rs = null;
                
              // SQL 구문
              String sql = "SELECT count(*) FROM member WHERE member_id = ? AND member_password= ?";
                
              // SQL, 인자 (선)처리
                
              try {
                  pstmt = con.prepareStatement(sql);
                    
                  pstmt.setString(1, memberId);
                  pstmt.setString(2, memberPassword);
                    
                    
                    
                  // SQL 실행, 예외처리
                  // hint ) isMember(String memberId)활용
                  // 다중 조건 활용
                  // 1) 회원 여부 점검
                  // 1-1) 회원 여부 일치 => 패스워드 존재여부 점검
                  // 2) 패스워드 일치 여부 점검
                  // 2-1) 패스워드 일치할 경우 메시징
                  // 2-2) 패스워드 불일치할 경우 메시징
                  // 1-2) 회원 여부 불일치 => 메시징처리 	
                    
                  // isMember 재활용
                  if(this.isMember(memberId)== true) {// 1-1)
                        
                      // 2)
                      rs = pstmt.executeQuery();
                        
                      if(rs.next()) {
                          result = rs.getInt(1) == 1 ? "일치하는 회원 정보가 존재합니다" :"회원 패스워드가 일치하지 않습니다";
                      }
                  }else { // 1-2
                      result = "회원 아이디가 존재하지 않습니다";				
                  }
                    
                  // 내가 작성한 코드 => 잘못됨
      //			if(rs.next()) {
      //				if(rs.getInt(1)==1) {
      //					if(rs.getInt(2)==1) {
      //						result += "일치하는 회원 정보가 존재합니다";
      //					}else if(rs.getInt(2)==0) {
      //						result += "회원 패스워드가 일치하지 않습니다";
      //					}
      //				}else if(rs.getInt(1)==0) {
      //					result += "회원 아이디가 존재하지 않습니다";
      //				}
      //			}
                    
              } catch (SQLException e) {
                    
                  System.out.println(methodName + " : " + e.getMessage());
                    
                  // 자원 반납
              }finally {
                  DbUtil.close(con, pstmt, rs);
              }	
                
              // 리턴(반환)		
              return result;
          }        
      }    
    
  • isMember(id) 테스트 클래스

      package com.javateam.jdbc.member.test;
    
      import com.javateam.jdbc.member.dao.MemberDao;
      import com.javateam.jdbc.member.dao.Impl.MemberDaoImpl;
      /**
      * isMember 단위 테스트 케이스<br>
      * : 회원 여부 점검<br><br>
      * 
      * @author migki
      *
      */
      public class isMembeTest1 {
    
          public static void main(String[] args) {
                
              // DAO 객체 생성
              MemberDao dao= MemberDaoImpl.getInstance();
                
              // 존재하는 아이디와 존재하지 않는 아이디 두가지 경우를 테스트
              // 1) 존재하는 아이디로 점검
              System.out.println("회원 아이디 존재 여부(java): " + dao.isMember("java"));
                
              // 2) 존재하지 않는 아이디로 점검
              System.out.println("회원 아이디 존재 여부(spring) : " + dao.isMember("spring"));
                
              // 내가 작성한 코드
      //		String result = dao.isMemberByMemberId("mini2") == true ?
      //							"중복된 아이디가 있습니다" : "중복 없음";
      //		System.out.println(result);
          }
    
      }
    

    ▶ 출력 화면 isMember

  • isMember(id,pw) 테스트 클래스
      package com.javateam.jdbc.member.test;
    
      import com.javateam.jdbc.member.dao.MemberDao;
      import com.javateam.jdbc.member.dao.Impl.MemberDaoImpl;
      /**
      * isMember(id,pw) 단위 테스트 케이스<br>
      * : 회원 인증 여부 점검 테스트<br><br>
      * 
      * @author migki
      *
      */
      public class isMembeTest2 {
    
          public static void main(String[] args) {
                
              // DAO 객체 생성
              MemberDao dao = MemberDaoImpl.getInstance();
                
              System.out.println("회원 id,pw 일치할 경우: " + dao.isMember("java", "1234"));
              System.out.println("회원 id존재 but pw 불일치 할 경우 : " + dao.isMember("java", "1111"));
              System.out.println("회원 아이디 (spring) 존재하지 않을 경우 : " + dao.isMember("spring", "1111"));
                
              // 내가 작성한 코드
      //		String result = dao.isMemberByMemberId("mini2") == true ?
      //							"중복된 아이디가 있습니다" : "중복 없음";
      //		System.out.println(result);
          }
    
      }
    

▶ 출력 화면 isMember2



Share Tweet +1