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.

    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:
    MapperScannerRegistrar, MapperFactoryBean
    • Element Detail

      • 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:
        2.1.2
        Default:
        true