Programming/Mybatis

[Mybatis] resultType 을 DTO 또는 VO 로 리턴 시 주의사항

OriginMaster 2021. 12. 6. 16:46
반응형

DTO 클래스 또는 VO 클래스의 클래스 변수들의 이름을 데이터베이스의 컬럼명과 동일하게 해주어야

resultType이 DTO 또는 VO 일때, 해당 클래스로 반환된다.

 

예시

  • DTO 클래스
@Data
public class UserDTO {
	private String user_email;
	private String user_pw;
	private String user_pwCnf;
	
	public String getUser_email() {
		return user_email;
	}
	public void setUser_email(String user_email) {
		this.user_email = user_email;
	}
	public String getUser_pw() {
		return user_pw;
	}
	public void setUser_pw(String user_pw) {
		this.user_pw = user_pw;
	}
	public String getUser_pwCnf() {
		return user_pwCnf;
	}
	public void setUser_pwCnf(String user_pwCnf) {
		this.user_pwCnf = user_pwCnf;
	}
}

 

  • Mapper.xml
<mapper namespace="com.home.mapper.LoginMapper">
	<sql id="userColumns">
		user_email,
		user_pw
	</sql>
	
	<select id="selectUser" parameterType="com.home.DTO.UserDTO" resultType="com.home.DTO.UserDTO">
		SELECT user_email, user_pw FROM tbl_user
		WHERE user_email= #{user_email, jdbcType=VARCHAR} AND user_pw= #{user_pw, jdbcType=VARCHAR}
	</select>

</mapper>

 

resultType 이 UserDTO인데, 

 

 

데이터베이스 컬럼명과 UserDTO 클래스의 변수명이 다르면 값이 존재해도 null 값이 반환된다....

 

 

 

이걸 잊고 엉뚱한데서 한참을 해맸다...

반응형