본문 바로가기
Category/Spring

[Spring] Mybatis 사용하기

by developer__Y 2024. 1. 16.

 

기본적인 프로젝트 베이스는 JDBC Template 프로젝트와 같다.

 

https://hmdeveloper.tistory.com/54

 

[Spring] JDBC Template

JDBC Template 사용하기 기존의 JDBC를 이용해 DBCP를 만들고, 커넥션풀에서 매번 Connection을 받아오고,반납하는 과정은 번거롭다. JDBC Template를 이용하면 커넥션 할당과 반납등 연동과 관련된 동작 및 P

hmdeveloper.tistory.com

 

Mybatis를 통해 쿼리문을 Mapper라는 xml 파일에 미리 입력시켜놓고, 

Dao 인터페이스의 구현없이 호출만으로 간편하게 사용할수있다.

Mybatis를 사용하기위해 pom.xml 디펜던시에 위의 2개의 의존성을 추가해준다.

 

 

spring 빈 등록또한 기존의 JDBC Template의 sqlSession과 DataSource 정보를 등록해준다.

 

 

Mapper  xml 설정

 

Dao 클래스

 

Bybatis mapper.xml

 

mybatis를 사용하기위해 위의 xml파일을 통해 mapper 파일에서 Dao 인터페이스의 추상메소드들을 설정을 통해 구현할수있다.

여기서 주의해야할 점은

mapper의 namespace는 구현하고자하는 Dao 인터페이스명

<select>등 각 메소드의 id는 구현하고자하는 Dao 인터페이스의 추상메소드명으로 매핑시켜줘야한다.

즉, IBDao 인터페이스의 list() 메소드 -> Mapper.xml의 <mapper namespace= IBDao>의 <select id=list> 이다.

그리고 ResultType는 추상메소드의 리턴타입으로 list() 메소드의 경우 리턴타입이 Arraylist<BDto> 이므로, BDto 클래스의 경로를 명시해준다.

 

Mybatis Mapper.xml에 구현한 메소드 사용하기

 

이제, Mybatis Mapper.xml에 쿼리문을 작성하여 구현한 메소드들을 컨트롤러에서 사용해보자.

 

 

해당 컨트롤러는 Service단을 생략하고, 컨트롤러에서 서비스단의 역할까지 같이 포함시켰다.

 

핵심은 컨트롤러에 빈에 등록해둔 SqlSession을 의존성 주입을 받고,

sqlSession의 getMapper() 메소드를 통해 IBDao 클래스를 구현한다는 것이다.

IBDao는 인터페이스로 추상메소드들을 구현하지않고, mapper.xml 파일에 명시해두고

getMapper()메소드를 통해 간편하게 바로 사용할 수 있다.