Mybatis-Spring을 사용하면 Mappers를 서비스 콩에 주입 할 수 있습니다. Mapper를 사용하는 경우 Dao에게 전화하는 것처럼 Mapper에게 전화해도 괜찮지 만 현재 Mybatis가 귀하를 위해 수행하기 때문에 DAO 구현을 인코딩 할 필요는 없습니다.
주입 된 맵퍼를 사용하면 코드에 mybatis-spring 종속성과 mybatis 종속성이 없습니다. 응용 프로그램에는 간단한 매퍼가 있습니다. 또한 맵퍼는 단지 인터페이스라는 것을 알아야합니다.
public interface usermapper {user getUser (String UserId); }이것이 Mybatis-Spring을 사용하여 매퍼를 만드는 방법입니다.
<bean id = "usermapper"> <property name = "sqlsessionfactory"ref = "sqlsessionfactory" /> <property name = "mapperinterface"value = "sample.usermapper" /> < /bean>
이제 Mapper가 서비스 개체에 주입 할 준비가되었습니다.
<bean id = "fooservice"> <property name = "usermapper"ref = "usermapper"/> </bean>
참고 : Mapper 인터페이스의 전체 클래스 이름은 Mapper XML 구성 파일의 네임 스페이스에 해당합니다.
Mapperfactorybean에 대해
MapPerfactoryBean에 의해 생성 된 프록시 클래스는 Mapper 인터페이스를 구현하고 (위의 예 : usermpper)를 구현하고 응용 프로그램에 주입됩니다. 에이전트는 실행 환경에서 생성되므로 지정된 매퍼는 인터페이스 여야합니다. 구체적인 구현 클래스 대신.
Spring의 XML 구성 파일에 모든 매퍼를 등록 할 필요가 없습니다. 대신 MapperscannerConfigurer를 사용할 수 있습니다. MapperscannerConfigurer는 ClassPath에서 매퍼를 찾아 자동으로 MapPerfactoryBeans로 만듭니다. MapperscannerConfigurer를 만들려면 Spring의 구성에 다음 코드를 추가 할 수 있습니다.
<ean> <prophery name = "basepackage"value = "org.mybatis.spring.sample.mapper"/> </bean>
BasePackage 속성을 사용하면 Mapper 인터페이스 파일의 기본 패키지 경로를 설정할 수 있습니다. 세미콜론 또는 쉼표를 분리기로 사용하여 둘 이상의 패키지 경로를 설정할 수 있습니다. 각 맵퍼는 지정된 패키지 경로에서 재귀 적으로 검색됩니다.
MapperscannerConfigurer가 MapPerfactoryBean을 생성 한 다음 자동으로 조립하기 때문에 sqlsessionfactory 또는 sqlsessiontemplate를 지정할 필요가 없습니다. 그러나 둘 이상의 데이터 소스 (따라서 다중 sqlsessionfactory)를 사용하는 경우 자동 조립이 실패 할 수 있습니다. 이 경우 sqlsessionfactory 또는 sqlsessiontemplate 속성을 사용하여 올바른 공장/템플릿을 설정할 수 있습니다.
MapperscannerConfigurer는 지정된 생성 인터페이스 또는 주석을 통해 매퍼를 생성하기위한 필터링을 지원합니다. 주석 클래스 속성은 검색 할 주석 이름을 지정합니다. MarkerInterface 속성은 검색 할 부모 인터페이스를 지정합니다. 둘 다 지정되면 인터페이스에 추가 된 맵퍼는 두 기준과 일치합니다. 기본적으로 두 속성 모두 NULL이므로 기본 패키지에 주어진 모든 인터페이스는 매퍼로로드 될 수 있습니다.
발견 된 맵퍼는 자동 감지 구성 요소에 대한 Spring의 기본 명명 정책을 사용하여 명명됩니다. 즉, 주석이 없으면 맵퍼의 캡슐화되지 않은 자격이없는 클래스 이름을 사용합니다. 그러나 @component 또는 jsr-330 @name annotation을 찾으면 이름이 나타납니다.