본문 바로가기
Programming/Spring

[spring] MyBatis 구조 - Annotation 형태

by NAMP 2016. 4. 26.

[spring] MyBatis 구조 - Annotation 형태

Annotation 형태로 만들 수 있다.

인터페이스로 설계

mapper 패키지 생성

인터페이스 생성

id 를 메소드로 대신한다.

/*
 * <select id="list" resultType="user.vo.UserVO"> 
 *         select * from userinfo
 * </select>
 */

public interface UserMapper {
    
    @Select("select * from userinfo")
    public List<UserVO> list();
}

config 파일을 수정한다.

<configuration>
    <mappers>
        <mapper resource="mappers/usermapper_m.xml"/>
        <mapper class="mapper.UserMapper"/>        
    </mappers>
</configuration>

getUserList() 를 변경한다.

    @Override
    public List<UserVO> getUserList() {
        System.out.println("UserDAO_MyBatis - getUserList");
        //return sqlSession.selectList("user.list");
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        return mapper.list();
    }

복잡한 SQL 구문 처리가 안된다.

resultMap 을 만든다.

    <resultMap type="user.vo.UserVO" id="sample">
        <result property="userid" column="userid"/>
        <result property="username" column="username"/>
        <result property="userpwd" column="userpwd"/>
        <result property="phone" column="email"/>
        <result property="email" column="phone"/>
        <result property="address" column="address"/>
    </resultMap>

resultMap 을 사용

    <!-- <select id="list" resultType="user.vo.UserVO" > -->
    <select id="list" resultMap="sample" >
        select * from userinfo
    </select>

출력결과

======= list ======
UserDAO_MyBatis - getUserList
(getUserList) 메소드 수행에 걸린 시간: 2ms
UserVO [userid=java03, username=홍씨, userpwd=1234, email=123-4567-0000, phone=hong@n.com, address=서울시]
UserVO [userid=java01, username=홍씨, userpwd=1234, email=000-0000-0000, phone=hong@n.com, address=서울시]
UserVO [userid=java02, username=홍씨, userpwd=1234, email=123-4567-0000, phone=hong@n.com, address=서울시]
UserVO [userid=admin, username=관리자, userpwd=a1234, email=02-1234, phone=admin@mc.co.kr, address=서울 역삼]
UserVO [userid=user01, username=길동이, userpwd=1234, email=00-0000, phone=hong@mc.co.kr, address=서울]
(removeUser) 메소드 수행에 걸린 시간: 1ms

export file : https://goo.gl/M5KbJc

댓글