728x90
@Alias를 사용하지 않은 경우, 패키지명을 붙여줘야 됨.
// org.example.app.dto.User 파일
public class User {
...
}
// xml 파일
// parameterType이나 resultType에 User 객체를 사용하기 위해서는 패키지명을 붙여줘야 됨.
<select id="getUserInfo" parameterType="org.example.app.dto.User" resultType="org.example.app.dto.User">
...
</select>
application.yml 파일에 type-aliases-package를 설정해주면 패키지명을 붙이지 않아도 mybatis가 bean을 찾을 수 있음.
org.example.app.dto에 있는 클래스는 @Alias가 없으면 소문자 클래스명으로 alias가 등록이 되며, @Alias를 명시해주면 설정된 값으로 alias가 등록이 됨.
mybatis:
type-aliases-package: org.example.app.dto
실제는 @Alias 값을 명시해줘도 내부적으로는 소문자로 등록이 됨.
// org.example.app.dto.User 파일
1) @Alias 설정 안한 경우, 클래스명 소문자인 "user"로 alias가 등록이 됨.
public class User {
...
}
2) @Alias 설정 한 경우, @Alias 값이 설정이 안되어 있으므로
클래스명 소문자인 "user"로 alias가 등록이 됨.
@Alias
public class User {
...
}
3) @Alias에 값을 설정 한 경우, @Alias 값인 "User"로 설정이 되어야 하지만 내부적으로는 "user"로
설정이 됨.
@Alias("User")
public class User {
...
}
mybatis 내부에 alias가 소문자로 저장이 되어 있으므로 parameterType을 어떻게 쓰든 소문자로 변환하여 alias와 비교하여 찾아감.
즉, parameterType이나 resultType에 "User"를 쓰든 "user"를 쓰든 결과는 같음.
아래는 모두 같음.
<select id="getUserInfo" parameterType="User" resultType="User">
<select id="getUserInfo" parameterType="user" resultType="User">
<select id="getUserInfo" parameterType="UsEr" resultType="User">
728x90
'프로그래밍 > spring' 카테고리의 다른 글
SpringBoot 프로젝트 생성하기 (0) | 2023.07.21 |
---|---|
Springboot에서 jsp 설정하기 (0) | 2023.07.04 |
프로세스 중단 방법 (0) | 2023.05.17 |