이전에 배웠던 insert와 select를 이용해 회원가입과 로그인, 그리고 로그인한 유저의 정보를 세션에 저장하는 것 까지 배웠다.
1) 먼저 INSERT를 통해 회원가입을 할 수 있는 메소드, mapper.xml 쿼리문 등을 작성해준다. 그리고 회원가입 페이지에서 가입을 실행해보면 DB에 잘 추가된걸 확인할 수 있다.
2) 이제 회원가입을 진행한 아이디와 비밀번호로 로그인을 하고 세션에 로그인한 유저의 정보를 저장해본다. 로그인을 위한 메소드, mapper.xml 쿼리문 등을 작성해준다.
- 로그인을 위한 select문에선 속성에 parameterType과 resultType 두 가지를 모두 준다. DB에 저장된 데이터와 로그인을 위해 보낸 데이터가 일치하는지 확인을 위한 parameterType과 조회된 result set을 가져오기 위한 resultType을 써준다.
- SqlSession의 selectOne 메소드를 사용해서 로그인한 유저의 정보를 저장한다. 그리고 로그인 유저 정보가 null이 아니라면 HttpSession 객체에 setAttribute 메소드로 세션에 로그인한 유저의 정보를 저장한다.
3) 위에서 회원가입한 아이디로 로그인을 진행해본다. 메소드에 println으로 loginUser의 정보를 출력이 잘 되는 것을 알 수 있다. 그리고 로그인시 index 페이지로 이동하도록 설정해 세션에 저장된 로그인 유저의 정보를 출력할 수 있는 것을 알 수 있다.
4) 한 가지 짚고 넘어가야 할 점은 아래 첫번째 이미지에 enrollDate의 정보도 잘 가지고 온 것을 볼 수 있는데, 두번째 이미지에 테이블 컬럼 이름이 ENROLL_DATE인 것을 알 수 있다. 배운 내용에 의하면 model 객체를 사용하고 spring이 데이터베이스와 자동으로 연결시켜줄때 setter의 메소드 이름과 테이블의 컬럼이름을 비교하여 가지고 온다는 것으로 알고있다. 하지만 아래에선 중간에 언더바가 추가되어 있는데 어떻게 DB의 데이터를 비교해서 가지고 올 수 있었을까? 그건 config.xml에 setting을 통해 해결할 수 있다. 세번째 이미지에 mapUnderscoreToCamelCase를 true로 설정해줘서 가능한 일이다. 보통 데이터베이스의 컬럼 이름은 중간에 언더바를 사용하여 단어를 구분해서 설정하는 경우가 많다. 이런 기준이 암암리에 정해져 있어서 Mybatis에서 자바 객체의 변수이름과 데이터베이스의 컬럼 이름과의 비교를 쉽게 하기 위해 위 설정 사항을 만들어 놓았다. 그래서 저 설정으로 따로 mapper.xml에서 컬럼 이름을 별칭으로 바꾸거나 자바 객체의 변수이름을 데이터베이스 컬럼 이름식으로 바꾸지 않아도 자바와 DB의 데이터를 쉽게 매칭 시킬 수 있다.