Annotation Interface MapperScan


Use this annotation to register MyBatis mapper interfaces when using Java Config. It performs when same work as MapperScannerConfigurer via MapperScannerRegistrar.

Either basePackageClasses() or basePackages() (or its alias value()) may be specified to define specific packages to scan. Since 2.0.4, If specific packages are not defined, scanning will occur from the package of the class that declares this annotation.

Configuration example:

 @Configuration
 @MapperScan("org.mybatis.spring.sample.mapper")
 public class AppConfig {

   @Bean
   public DataSource dataSource() {
     return new EmbeddedDatabaseBuilder().addScript("schema.sql").build();
   }

   @Bean
   public DataSourceTransactionManager transactionManager() {
     return new DataSourceTransactionManager(dataSource());
   }

   @Bean
   public SqlSessionFactory sqlSessionFactory() throws Exception {
     SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
     sessionFactory.setDataSource(dataSource());
     return sessionFactory.getObject();
   }
 }
 
Since:
1.2.0
Author:
Michael Lanyon, Eduardo Macarron, Qimiao Chen
See Also:
  • Element Details

    • value

      @AliasFor("basePackages") String[] value
      Alias for the basePackages() attribute. Allows for more concise annotation declarations e.g.: @MapperScan("org.my.pkg") instead of @MapperScan(basePackages = "org.my.pkg")}.
      Returns:
      base package names
      Default:
      {}
    • basePackages

      @AliasFor("value") String[] basePackages
      Base packages to scan for MyBatis interfaces. Note that only interfaces with at least one method will be registered; concrete classes will be ignored.
      Returns:
      base package names for scanning mapper interface
      Default:
      {}
    • basePackageClasses

      Class<?>[] basePackageClasses
      Type-safe alternative to basePackages() for specifying the packages to scan for annotated components. The package of each class specified will be scanned.

      Consider creating a special no-op marker class or interface in each package that serves no purpose other than being referenced by this attribute.

      Returns:
      classes that indicate base package for scanning mapper interface
      Default:
      {}
    • nameGenerator

      Class<? extends org.springframework.beans.factory.support.BeanNameGenerator> nameGenerator
      The BeanNameGenerator class to be used for naming detected components within the Spring container.
      Returns:
      the class of BeanNameGenerator
      Default:
      org.springframework.beans.factory.support.BeanNameGenerator.class
    • annotationClass

      Class<? extends Annotation> annotationClass
      This property specifies the annotation that the scanner will search for.

      The scanner will register all interfaces in the base package that also have the specified annotation.

      Note this can be combined with markerInterface.

      Returns:
      the annotation that the scanner will search for
      Default:
      java.lang.annotation.Annotation.class
    • markerInterface

      Class<?> markerInterface
      This property specifies the parent that the scanner will search for.

      The scanner will register all interfaces in the base package that also have the specified interface class as a parent.

      Note this can be combined with annotationClass.

      Returns:
      the parent that the scanner will search for
      Default:
      java.lang.Class.class
    • sqlSessionTemplateRef

      String sqlSessionTemplateRef
      Specifies which SqlSessionTemplate to use in the case that there is more than one in the spring context. Usually this is only needed when you have more than one datasource.
      Returns:
      the bean name of SqlSessionTemplate
      Default:
      ""
    • sqlSessionFactoryRef

      String sqlSessionFactoryRef
      Specifies which SqlSessionFactory to use in the case that there is more than one in the spring context. Usually this is only needed when you have more than one datasource.
      Returns:
      the bean name of SqlSessionFactory
      Default:
      ""
    • factoryBean

      Class<? extends MapperFactoryBean> factoryBean
      Specifies a custom MapperFactoryBean to return a mybatis proxy as spring bean.
      Returns:
      the class of MapperFactoryBean
      Default:
      org.mybatis.spring.mapper.MapperFactoryBean.class
    • lazyInitialization

      String lazyInitialization
      Whether enable lazy initialization of mapper bean.

      Default is false.

      Returns:
      set true to enable lazy initialization
      Since:
      2.0.2
      Default:
      ""
    • defaultScope

      String defaultScope
      Specifies the default scope of scanned mappers.

      Default is "" (equiv to singleton).

      Returns:
      the default scope
      Default:
      ""
    • processPropertyPlaceHolders

      boolean processPropertyPlaceHolders
      Specifies a flag that whether execute a property placeholder processing or not.

      The default is true. This means that a property placeholder processing execute.

      Returns:
      a flag that whether execute a property placeholder processing or not
      Since:
      3.0.3
      Default:
      true