Day87 - [Spring]myBatis

2021. 6. 19. 21:00Spring

이번에는 Spring 의 myBatis 에 대해서 알아 봅시다.

 

이 전 포스팅에서, Spring JDBC 를 사용하는 방법을 알아 보았는데요

 

myBatis 도 DB 에 접근하는 방법으로써, 좀 더 간편합니다.

 

myBatis

myBatis 개발자가 지정한 SQL, 고급 매핑을 지원하는 프레임워크 입니다.

 

myBatis 는 기존의 DAO 의 JDBC 코드를 대신 합니다.

 

myBatis 는 기존의 DAO Interface 를 구현화한 DAOImpl 을 xml 파일로 대신 합니다.

 

사용하는 방법을 알아 봅시다.

 

1. maven 을 통한 myBatis , myBatis-spring 다운로드

"pom.xml" 파일로 이동해서, 아래의 코드를 추가한 뒤에, Maven Update 를 진행 합니다.

※ 버전은 "maven repository" 에서 찾아서 사용합니다. ( 사용률이 높은 ? )

 

2. 외부 설정 파일 ( root-context.xml ) 설정

"root-context.xml" 파일로 이동해서 아래의 설정 및 코드를 추가 합니다.

위 부분의 ref 는 이 전 포스팅에서 만들어 놓은 Connection Pool 입니다. ( Spring JDBC 할 때 만들어 놓음 )

 

3. 위에 연결한 패키지를 만들고, 아래에 Interface 생성, Interface는 @Mapper 로 연결

4. resources 폴더 아래에, Interface 이름과 똑같은 "xml" 만들기.

5. resources 폴더 아래에, myBatis 설정 파일 만들기

6. 외부 설정 파일 (root-context.xml) 2번 에서 만든 myBatis 에 위에서 만든 4,5번 추가

※ "classpath:/" 를 사용하면, "src/main/resources/" 폴더 라는 의미, * 는 이름상관 없이 아무거나 라는 뜻을 가지고 있습니다.

※ mybatis-config.xml 파일에 아무것도 적지 않으면 파일을 찾을 수 없습니다. (configuration 열고 닫고 라도 해주세요)

7. 3번에서 만든 Interface 와, 4번에서 만든 xml 파일 매핑 시키기

위에서 만든 BoardMapper(Interface) 를 BoardMapper.xml 에 매핑시켜 줍니다. 아래는 "BoardMapper.xml" 파일

<mapper> 를 사용하는데, namespace 에는 Interface 의 경로를 넣어주면 됩니다.

 

8. <mapper> 태그 사이에 sql 문 작성

각각 실행하는 SQL 문을 태그로 묶어 줍니다. insert -> <insert> / select -> <select> ....

id 에는, interface에 있는 메서드의 이름을 넣어 줍니다.

select문 같이 반환타입이 필요한 경우에는 resultType 을 사용합니다.

resultType 에는 Model ( BoardVO 의 위치를 풀로 넣어 주어야 합니다 )

※ 아래의 resultType 에 BoardVO 만 써져있는 이유는 5번에서 설정한 typeAlias 의 효과 입니다.

mapper.xml 에서 sql 문을 사용할 때, 넣어줘야 하는 변수는 "#{변수명}" 을 사용합니다

 

위의 1 ~7 번으로 설정을 완료 했다면, Interface 부분과 xml 부분에 추가하고 싶은 메서드 및 sql 문을 사용하면 됩니다 ~

 

※ 3 ~ 7 번의 순서는 다르게 해도 상관 없지만, 외부 설정 파일(root-context.xml) 에 코드 추가를 잊지 마세요