상세 컨텐츠

본문 제목

[SI에서 살아남기] 내맘대로 Mapper,Repostiory 역할 및 간단한 예시

SI에서 살아남기/Spring

by 주관적인 2020. 5. 8. 00:08

본문

백엔드 비즈니스 로직 전체 구조

Model: controller, Service, Mapper/Repository 와의 상호 작용

RestController : Service와 상호작용

Service: Mapper, Reopstiory와 상호작용

Mapper/Reopstiory: SqlSesion 및 DB와 상호작용

 

Mapper / Repository

  • Mybatis를 사용하여 데이터를 처리하는 부분입니다. (+xml 사용)
  • Mapper 어노테이션을 사용하여 xml에 namespace와 매핑시킴
  • Repostiory 어노테이션을 사용하여 메서드의 명과 xml에 각 id와 매핑시킴

 

알아두어야 하는 어노테이션

구성요소 설명
@Mapper Mapper 클래스의 정의, 자동 빈 등록
@Repository("value") mybatis.xml에서 사용하고 있는 맵핑xml 중 namespace가 value로 지정된 xml을 자동으로 찾음
Ex)
-Animal.interface = @Repository("a")
-animal.xml  = <mapper namespace="a">
*서로 매칭
@Param("value") 본인이 원하는 명으로 mapper에서 사용하기 위해
Ex)
-Animal.interface
public void test(@Param("name") String value)
-animal.xml
#{name} 으로 value값 받을 수 있음
* Param 사용 안할시 #{value}

 

Example)

AnimalMapper.interface

 

1
2
3
4
5
6
7
8
9
10
11
@Mapper
@Repository("animal")
public interface AnimalMapper
{
    //동물 전체 조회
    public List<animal> getAnimals();
    //동물 신규 등록
    public int createAnimals(@Param("a")Animal animal);
    //동물 선택 수정
    public int updateAnimal(@Param("a")Animal animal);
}
cs

 

Animal.xml

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<mapper namespace="animal">
    <select id="getAnimals" resultType="패키지명.Animal">
        select * from Animal // Animal 테이블의 전체 컬럼을 Model타입으로 리턴
    </select>
    <insert id="createAnimal" parameterType="패키지명.Animal">
        insert into Animal values (
            a.animal_id
            a.animal_name
            ~~~~~~~~~  //@Param을 통해 원하는 이름으로 사용
        )
    </insert>
    <update id="updateAnimal" parameterType="패키지명.Animal">
        ...
    </update
</mapper>
cs

 

 

 

Service에 관하여?

 

전체 비즈니스 로직 보기

 

 

 

 

본 글은 다소 주관적인 생각들을 포함하고 있어, 잘못된 정보를 제공할 수도 있습니다. 부족한 점이 있으면 댓글 남겨주세요. 추가 및 수정 하도록 하겠습니다. 감사합니다.

관련글 더보기

댓글 영역