publicinterfaceMemberService { // 회원 가입 (일반회원가입테이블에 sns계정 컬럼 추가하기) // 일반적으로는 DAO랑 같은 메소드명을 사용하여 일관성을 유지한다 publicvoidinsertMember(MemberVO vo); // 로그인기능 DAO랑 같은 이름으로 하지않은이유? 이름이 달라도 메서드생성가능하다는 걸 보여주기 위해서. // public MemberVO readMemberWithIDPW(String userid, String userpw) throws Exception; // 로그인기능 publicMemberVOloginMember(MemberVO vo); //회원정보 보기 publicMemberVOreadMember(String id); //회원정보 수정 publicvoidupdateMember(MemberVO vo); //회원정보 삭제 publicvoiddeleteMember(MemberVO vo); }
//DB와 연결 (의존주입) @Inject private MemberDAO mdao; //회원가입 @Override publicvoidinsertMember(MemberVO vo) { //컨트롤러 -> 서비스 호출 -> DAO 호출 -> Mapper -> DB System.out.println("S : 회원가입() 실행"); if(vo == null) { //처리 return; } mdao.insertMember(vo); }
//로그인기능 @Override publicMemberVOloginMember(MemberVO vo) { System.out.println("S : 컨트롤러에서 호출받으면 필요한 정보를 받아서 DAO로 전달"); MemberVOreturnVO=null; try { returnVO = mdao.readMemberWithIDPW(vo.getUserid(), vo.getUserpw()); } catch (Exception e) { e.printStackTrace(); returnVO = null; //실행하다 문제가 생겼을때 해당 데이터를 보내지않겠다는 의미 = 예외처리 } return returnVO; //null이 반환되면 앞의 코드가 문제가 있다는 것을 바로 알수있다. }
publicinterfaceMemberDAO { //해당 도메인에 관련된 기능 선언 publicStringgetTime(); //C: 회원가입 publicvoidinsertMember(MemberVO vo); //R: 회원 정보 조회 - 사용자 ID 해당하는 정보 가져오기 publicMemberVOreadMember(String userid)throws Exception; //R: 회원 정보 조회 - ID,PW정보에 해당하는 사용자 정보 publicMemberVOreadMemberWithIDPW(String userid,String userpw)throws Exception;
@Repository publicclassMemberDAOImplimplementsMemberDAO { //DB연결 (xml에서 만들어진 객체를 가져다 사용하고자함 = 의존 주입) @Inject private SqlSession sqlSession; //mapper위치까지 접근 가능 but mapper가 여러개일수있음 => mapper구분필요 //mapper구분하는 값 namespace privatestaticfinalStringnamespace="com.itwillbs.mappers.memberMapper"; @Override publicStringgetTime() { Stringresult= sqlSession.selectOne(namespace+".getTime"); //괄호안에 쿼리구문입력하기 return result; }
//회원가입구현 -> memberMapper.xml 작성 후 아래 메서드 작성 -> MemberDAOtest.java 이동 @Override publicvoidinsertMember(MemberVO vo) { System.out.println("#####"); sqlSession.insert(namespace+".insertMember", vo); //괄호안은 (쿼리구문, 매개변수)순으로 입력하기 }
//회원 정보 조회-사용자 ID 해당하는 정보 가져오기 @Override publicMemberVOreadMember(String userid)throws Exception { //테스트(컨트롤러) 호출 -> 정보를 저장 -> DB로이동 MemberVOvo= sqlSession.selectOne(namespace+".readMember", userid); //괄호안의 물음표를 콤마뒤에 쓰는거임 return vo; }
//인터페이스 선언 -> 서브클래스 구현 //회원 정보 조회 - ID,PW정보에 해당하는 사용자 정보 @Override publicMemberVOreadMemberWithIDPW(String userid, String userpw)throws Exception { //테스트(컨트롤러) 호출 -> 정보를 저장 -> DB로이동 //String인자를 2개를 가져갈 수 없기때문에 파라미터 두개를 객체인 Map에 넣어서 가지고 넘긴다 //return sqlSession.selectOne(namespace+".readMemberWithIDPW", userid, userpw); // DB로 정보를 전달하기 위해서는 sqlSeesion 객체 활용 // * 1개 이상의 정보를 전달할때는 객체 단위로 전달 // * 객체(VO) 안에 저장이 안되는 정보의 경우 Map을 사용 // Map은 key-value형태 : 이때 key값은 sql구문의 #{ㅇㅇㅇ} 이름과 같아야함 Map<String, Object> paramMap=newHashMap<String, Object>(); paramMap.put("userid", userid); paramMap.put("userpw", userpw); return sqlSession.selectOne(namespace+".readMemberWithIDPW", paramMap); }