Home Dao와 mybatis
Post
Cancel

Dao와 mybatis

DAO와 MyBatis

Mapper 파일의 저장경로 설정

Mapper란 MyBatis에서 SQL 문을 저장하는 존재를 말한다.

Mapper를 저장할 폴더 mappers를 src/main/resources 에 추가해준다.



DAO

UserDAO
쿼리문에 던져주는 정보가 매개변수(User user) 부분이고
해당 정보를 토대로 쿼리에 다시 반환하는 값이 리턴 타입인 UserA부분이다.

1
UserA userInfo(User user)



MyBatis

Mapper

MyBatis의 namespace에 Mapper 인터페이스의 경로를 적어준다.

user.xml

1
<mapper namespace="haedal.uni.UserDAO">



전해주는 값 : 반환 값 메소드 (전해주는 값)

SQL id에는 매핑하는 메소드의 이름을 지정한다. → DAO의 메소드 이름과 id 값이 같아야 한다.

1
<select id="userInfo" resultType="UserA">


# 기호가 코드 로직에서 담기는 부분이기 때문에 userId가 User에 있어야 한다.

1
2
3
4
5
6
7
8
<select id="userInfo" resultType="UserA">
   select
      USERID 
      , USERNAME
   from TABLE_USER
   where
      USERID = #{userId}
</select>
1
UserA userInfo(User user)


#{ }는 후에 삽입되어 대체될 값이다.

ex. userId가 1로 정해지면 USERID = #{userId}는 USERID = 1이 된다.



반환 하는 값 _ 반환 값 메소드 (전해주는 값)

id = “DAO 메소드 명” resultType = “반환 값”(모델 or int 기타 등등)

1
<select id="userInfo" resultType="UserA">       


UserA에는 private string username;private User user; 이 있고
User 에는 userId가 있다고 가정한다.

1
2
3
4
5
@Alias("UserA")
public class UserA {
    private String username;
    private User user;
}
1
2
3
4
@Alias("User")
public class User {
    private UserId userId;
} 


1
UserA userInfo(User user)

UserA가 반환 값이다. sql에서는 resultType이 반환 값으로 적힌다.

아래 코드를 보면 as(alias)가 추가되었다.

1
2
3
4
5
6
7
8
<select id="userInfo" resultType="UserA">
   select
      USERID as "USER.USERID"
      , USERNAME as "USERNAME"
   from TABLE_USER
   where
      USERID = #{userId}
</select>

resultType이 UserA이며, UserA에는 username이 있으므로 해당 변수만 적으면 되지만

userId는 User에 있으므로 해당 경로에 맞게 적어준다.

변수 담기는 값 as vo 변수이름(명칭)



참고로 resultType에서 패키지 명(ex. haedal-uni.project.UserA)을 다 적어줄 필요가 없던 이유는

UserA 라는 model 객체에 @Alias를 추가했기 때문이다.


관련 글 : resultType이 int? 객체?
출처 : [Spring] 7.DAO 구현

This post is licensed under CC BY 4.0 by the author.