1. mybatis가 지원하는 매핑 방법
mybatis가 지원하는 매핑 방법에는 xml 기반의 mapper.xml 파일과 java 기반의 매핑 인터페이스 클래스가 포함됩니다. 인터페이스 메서드 주석은 네 가지가 주요 @Insert, @Delete, @Update, @Select
2. 인터페이스 주석을 이용한 매핑 방법
다음 실험들은 모두 t_user 표를 기반으로 하며 다음과 같이 구조화됩니다:
2.1 증가 @Insert
기본적으로 세 가지 방식이 있는데, 수동 지정(애플리케이션 계층), 자체 추가 기본 키(데이터 레이어 단일 테이블), 그리고 선택 기본 키(데이터 레이어 다중 테이블)입니다.
1. 애플리케이션 계층에서 기본 키를 수동으로 지정합니다
수동 방법은 기본 키를 다르게 취급하지 않으며, 애플리케이션 계층이 삽입 전에 객체를 생성할 때 기본 키를 부여하는데, 이는 삽입 시 일반 필드와 다르지 않습니다.
위 예시에서 mybatis는 어떤 필드가 기본 키인지, id가 기본 키 필드인지 모르지만, 다르게 취급하지는 않습니다.
#{username} 메서드는 현재 문맥으로 사용자를 사용하는 것으로, 사용자의 속성에 접근할 때 속성 이름을 직접 쓸 수 있도록 합니다.
2. 테이블이 기본 키를 추가합니다
자가 증가하는 기본 키는 XML 구성에서 기본 키 백필에 해당하며, 간단한 예시입니다:
Option은 XML 내 select 태그 집합의 속성에 대응하고, userGeneratordKeys는 자체 증가 기본 키를 사용하고, keyProperty는 기본 키 필드 이름에 대응합니다.
자가 증가하는 기본 키는 기본 데이터베이스의 자가 증가 기능을 사용합니다.
3. 기본 키 선택
데이터 계층에서 값을 생성하기 위해 기본 키를 선택하고, 이 값을 기본 키의 값으로 사용합니다.
2.2 삭제 @Delete
삭제할 때는 @Delete 주석 값에 조건을 적고, 성공적으로 삭제된 레코드 수로 int 타입을 반환하면 됩니다.
2.3 변화 @Update
수정할 때는 @Update 값에 SQL 문장을 쓰고, 수정된 레코드 라인 수를 나타내는 int 타입을 반환하면 됩니다.
2.4 체크 @Select
쿼리는 좀 더 복잡한데, 쿼리는 객체에 대한 발견된 필드를 어떻게 설정할지 포함하며, 보통 세 가지 방법이 있습니다:
1. SQL 문에서 수동으로 별칭을 지정하여 맞출 수 있습니다
SQL 문장을 작성할 때는 각 필드에 객체 속성과 일치하는 별칭을 수동으로 할당하는데, 이는 테이블 필드 이름과 객체 속성 이름이 매우 다르고 테이블 필드가 많지 않은 상황에 적합합니다.
2. mybatis의 자동 밑줄을 긋는 혹 변환 기능
mybatis에는 mapUnderscoreToCamelCase라는 옵션이 있는데, 테이블 내 필드 이름이 객체의 속성 이름과 같지만 밑줄과 혹 쓰기의 차이가 있을 때 적용됩니다.
mapUnderscoreToCamelCase를 설정한 후, mybatis는 ResultSet에서 찾은 데이터를 객체로 설정할 때 밑줄을 hump로 변환하려고 시도하고, 앞에 있는 집합을 스티치하여 속성을 설정합니다.
변환을 켜세요:
그럼 쿼리:
인쇄된 결과를 보면, 객체에 birth_day 속성이 채워집니다:
3. ResultMap 사용
테이블의 필드 이름과 객체의 속성 이름이 크게 다르고 테이블에 필드가 많다면, 적응을 위해 ResultMap을 사용해야 합니다.
@Results XML의 ResultMap에 대응하며, ID를 지정할 수 있어 위의 결과를 참조하는 데 사용할 수 있습니다:
@ResultMap 사용하여 기존 ResultMap을 참조할 수 있으며, 이는 자바에서 @Results 주석을 사용해 정의하거나 XML에서 resultMap 태그를 사용해 정의할 수 있습니다.
2.5 샘플 코드
User.java
UserMapper.java
3. 요약
인터페이스 주석 사용의 장점:
1. 매핑 명제를 작성하는 것이 더 편리하고 빠릅니다
인터페이스 주석 사용의 단점:
1. 비교적 단순한 구성에 적합하며, 인터페이스가 너무 복잡하면 구현할 수 없습니다.
2. 동적 SQL을 사용할 수 없고, 다소 무례합니다.
|