Spring

DB / MyBatis

Dear-J 2025. 4. 29. 22:56

MyBatis

SQL을 XML에 편리하게 작성 가능

XML에 작성하기 때문에 라인이 길어져도 문자 더하기에 대한 불편함 x

 

동적 쿼리를 편리하게 작성 가능

 

 

적용

MyBatis 매핑 XML을 호출하는 Mapper 인터페이스

>> 인터페이스의 메서드를 호출하면 xml의 해당 SQL을 실행하고 결과를 돌려줌

 

id는 매퍼 인터페이스에서 설정한 메서드 이름 지정

파라미터는 #{} 문법 사용, 매퍼에서 넘긴 객체의 프로퍼티 이름을 적어줌

>> preparedStatement 사용, JDBC의 ?를 치환한다 생각

useGeneratedKeys는 데이터베이스가 키를 생성하는 IDENTITY 전략일 때 사용

>> keyProperty는 생성되는 키의 속성 이름 지정, Insert 끝나면 item 객체의 id 속성에 생성된 값 입력됨

 

파라미터가 2개 이상이면 @Param으로 이름 지정해서 구분해야 함

 

resultType은 반환 타입 명시, 여기서는 결과를 Item 객체에 매핑

>> JdbcTemplate의 BeanPropertyRowMapper처럼 SELECT SQL의 결과를 객체로 바로 변환해줌

>> 언더 스코어를 카멜 표기법으로 자동 처리

자바 코드에서 반환 객체가 하나이면 Item, Optional<Item> 사용

하나 이상이면 컬렉션 사용, 주로 List

 

<if>는 해당 조건이 만족하면 구문을 추가

<where>은 적절하게 where 문장 만들어 줌

>> <if>가 모두 실패하면 where 만들지 않음

>> <if>가 하나라도 성공하면 처음 나타나는 and를 where로 변환

 

MyBatis 스프링 연동 모듈

매퍼 인터페이스의 구현체가 없는데 어떻게 동작?

JDK 동적 프록시 적용

 

매퍼 구현체

마이바티스 스프링 연동 모듈이 ItemMapper 구현체를 만들어줘서 인터페이스 만으로 XML의 데이터 호출 가능

매퍼 구현체는 예외 변환도 처리

>> MyBatis에서 발생한 예외를 스프링 예외 추상화인 DataAccessException에 맞게 변환해서 반환

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 김영한, 스프링 DB 2편 - 데이터 접근 활용 기술

'Spring' 카테고리의 다른 글

DB / Spring Data JPA  (0) 2025.05.02
DB / JPA  (0) 2025.05.01
DB / Test  (0) 2025.04.28
DB / Spring JdbcTemplate  (0) 2025.04.27
DB / 데이터 접근 기술  (0) 2025.04.26