Annotation Type MapperScan


  • @Retention(RUNTIME)
    @Target(TYPE)
    @Documented
    @Import(MapperScannerRegistrar.class)
    @Repeatable(MapperScans.class)
    public @interface MapperScan
    Use this annotation to register MyBatis mapper interfaces when using Java Config. It performs when same work as MapperScannerConfigurer via MapperScannerRegistrar.

    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
    See Also:
    MapperScannerRegistrar, MapperFactoryBean
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass
      This property specifies the annotation that the scanner will search for.
      java.lang.Class<?>[] basePackageClasses
      Type-safe alternative to basePackages() for specifying the packages to scan for annotated components.
      java.lang.String[] basePackages
      Base packages to scan for MyBatis interfaces.
      java.lang.Class<? extends MapperFactoryBean> factoryBean
      Specifies a custom MapperFactoryBean to return a mybatis proxy as spring bean.
      java.lang.String lazyInitialization
      Whether enable lazy initialization of mapper bean.
      java.lang.Class<?> markerInterface
      This property specifies the parent that the scanner will search for.
      java.lang.Class<? extends org.springframework.beans.factory.support.BeanNameGenerator> nameGenerator
      The BeanNameGenerator class to be used for naming detected components within the Spring container.
      java.lang.String sqlSessionFactoryRef
      Specifies which SqlSessionFactory to use in the case that there is more than one in the spring context.
      java.lang.String sqlSessionTemplateRef
      Specifies which SqlSessionTemplate to use in the case that there is more than one in the spring context.
      java.lang.String[] value
      Alias for the basePackages() attribute.
    • Element Detail

      • value

        java.lang.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

        java.lang.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

        java.lang.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

        java.lang.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

        java.lang.Class<? extends java.lang.annotation.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

        java.lang.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

        java.lang.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

        java.lang.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

        java.lang.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

        java.lang.String lazyInitialization
        Whether enable lazy initialization of mapper bean.

        Default is false.

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