Java의 MyBatis 프레임워크와 Spring 프레임워크 통합에 대한 맵 주입 설명

2487 단어 MyBatis매핑
MyBatis-Spring을 사용하면 Service Bean에 매핑을 주입할 수 있습니다.맵을 사용할 때, DAO를 호출하는 것처럼 맵을 호출하면 되지만, 이때 당신은 DAO가 실현하는 인코딩을 할 필요가 없습니다. 왜냐하면 MyBatis가 당신을 위해 진행하기 때문입니다.
주입된 맵을 사용하면 코드에 MyBatis-Spring 의존과 MyBatis 의존이 나타나지 않습니다.우리의 응용 프로그램에는 이런 간단한 매핑기가 있다.너도 알다시피 맵은 단지 하나의 인터페이스일 뿐이다.

public interface UserMapper {  
  User getUser(String userId);  
}  
이것은 MyBatis-Spring을 사용하여 맵을 만드는 방법입니다.

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
  <property name="mapperInterface" value="sample.UserMapper" />  
</bean>  
이제 매핑기가 Service 객체에 주입될 준비가 되었습니다.

<bean id="fooService" class="sample.FooServiceImpl"> 
  <property name="userMapper" ref="userMapper"/> 
</bean> 
주: 맵 인터페이스 전체 이름과 맵 xml 프로필의namespace는 대응합니다.
 
Mapper Factory Bean 정보
Mapper Factory Bean에서 만든 프록시 클래스는 맵 인터페이스 (예: UserMapper) 를 구현하고 응용 프로그램에 주입합니다.프록시가 실행 환경에서 생성되기 때문에, 지정한 맵은 인터페이스가 되어야 합니다.구체적인 실현류가 아니라 
Spring의 XML 구성 파일에 모든 맵을 등록할 필요가 없습니다.반대로 Mapper Scanner Configurer를 사용하면 클래스 경로 아래의 맵을 찾아서 자동으로 Mapper Factory Beans로 만들 수 있습니다.apperScannerConfigurer를 만들려면 Spring 구성에 다음 코드를 추가합니다.

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
  <propery name="basePackage" value="org.mybatis.spring.sample.mapper"/> 
</bean> 
 
basePackage 속성은 맵 인터페이스 파일에 기본적인 패키지 경로를 설정합니다.구분자나 쉼표를 사용하여 하나 이상의 패키지 경로를 구분자로 설정할 수 있습니다.각 맵은 지정된 패키지 경로에서 차례로 검색됩니다.
SqlSessionFactory나 SqlSessionTemplate를 지정할 필요가 없습니다. 왜냐하면 MapperScannerConfigurer가 MapperFactoryBean을 만들고 자동으로 조립하기 때문입니다.단, 만약 당신이 하나 이상의 DataSource (따라서 여러 개의 SqlSessionFactory) 를 사용한다면 자동 조립은 효력을 잃을 수 있습니다.이 경우, 당신은 sqlSessionFactory나 sqlSessionTemplate 속성을 사용하여 정확한 공장/템플릿을 설정할 수 있습니다.
 
MapperScannerConfigurer는 지정된 생성 인터페이스나 메모로 맵을 생성하는 필터링을 지원합니다.annotationClass 속성은 찾을 주석의 이름을 지정합니다.markerInterface 속성은 찾을 부모 인터페이스를 지정합니다.둘 다 지정되면 인터페이스에 추가된 맵은 두 가지 표준과 일치합니다.기본적으로, 이 두 속성은 모두null이기 때문에, 기본 패키지에서 지정한 모든 인터페이스는 맵으로 불러올 수 있습니다.
 
발견된 매핑기는 자동 탐지 구성 요소에 대한 Spring의 기본 이름 정책을 사용하여 이름을 지정합니다.즉, 주석을 발견하지 못하면 맵의 비대문자 비완전 한정 클래스를 사용한다.하지만 @Component 또는 JSR이 발견되면330@Named메모, 이름을 가져옵니다.

좋은 웹페이지 즐겨찾기