티스토리 뷰

로그인 구현하면서 select로 로그인이 안되는 상황에 발생했다.

개발초기라 DB와 연결이 안된 줄 알았는데 회원가입할 때 쓰이는 insert 구문은 제대로 돼서

select의 문제인가 하고 있었다.

 

로그를 출력하면 로그인 메서드를 실행까지는 하지만 정작 값을 가져오면 null이 나와서 쿼리문을 조작해봤다.

 

로그인을 실행하는 userCheck 쿼리문

<select id="userCheck" resultType="com.web.domain.MemberDTO">
    SELECT *
      FROM USER_INFO
     WHERE USER_ID	= #{userId}
       AND USER_PASS	= #{userPass}
</select>

 

 

해당 쿼리문에 컬럼 alias를 DTO 값으로 바꾸니 들어간다!

SELECT USER_ID as userId
  FROM USER_INFO
 WHERE USER_ID		= #{userId}
   AND USER_PASS	= #{userPass}

 

DTO에는 카멜 표기법, DB에는 스네이크 표기법을 쓴 게 상호 인식을 하지 못해서 발생하는 문제였다!

 

 

하지만 일일이 alias하면 시간도 많이 걸리고 오류가 날 테니까

자동으로 카멜 표기법으로 변환할 수 있는 건 없을까 찾아본 결과,

 

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 카멜 표기법 변환 -->
<configuration>
	<settings>
		 <setting name="mapUnderscoreToCamelCase" value="true" />
	</settings>
</configuration>

 

mybatis-config.xml 파일에 해당 세팅을 추가해주면 쉽게 자동으로 바꿔진다.

 

이 위치에 만들면 된다

 

주의할 점은 이제 DTO 값은 무조건 카멜 표기법으로 입력해야한다.

이후에 팀원이 DTO 값을 스네이크 표기법으로 했다가 오류가 나서 통일시키기로 하였음!

 

댓글
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함