mybatis-spring包@MapperScan注解下的属性

 源码:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({MapperScannerRegistrar.class})
public @interface MapperScan {
    String[] value() default {};

    String[] basePackages() default {};

    Class[] basePackageClasses() default {};

    Class nameGenerator() default BeanNameGenerator.class;

    Class annotationClass() default Annotation.class;

    Class markerInterface() default Class.class;

    String sqlSessionTemplateRef() default "";

    String sqlSessionFactoryRef() default "";

    Class factoryBean() default MapperFactoryBean.class;
}

属性解释:

  •        annotationClass : 这个是基于包下面扫描所有的接口类并注册,也有指定的属性。     
  •        markInterface : 基于包下面扫描所有接口类并注册,也可以指定特殊的接口为父类。
  •        sqlSessionTemplateRef: 在指定使用sqlSessionTemplateRef的情况下,这里有一个或多个的Spring的容器。经常我们会使用一个或多个的数据库.
  •       sqlSessionFactoryRef : 在指定使用sqlSessionFactoryRef的情况下,这里有一个或多个的Spring的容器。经常我们会使用一个或多个的数据库.
  •        nameGenerator : 在Spring的容器中,将使用BeanNameGenerator去命名检测到的组件。
  •        basePackageClasses : 这是一个安全替代basePackages()作为指定组件的扫描包。包下面的所有接口都将会被扫描。
  •        basepackages : 基于包下面的扫描MyBatis的接口。注意是,只有是接口的将会被扫描注册,如果是具体的类将会被忽略。

运用举例:配置多数据源

@Configuration
@MapperScan(basePackages = "com.xxx", annotationClass = DatasourceRead.class, sqlSessionFactoryRef = DatasourceNewsReadConfig.SQL_SESSION_FACTORY_NAME)
public class DatasourceNewsReadConfig
{
    public static final String SQL_SESSION_FACTORY_NAME = "sessionFactoryNewsRead";
    public static final String TX_MANAGER = "txManagerNewsRead";
    private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
    @Autowired
    private MybatisProperties properties;

    @Bean(name = "datasourceNewsRead")
    @ConfigurationProperties(prefix = "spring.datasource.newsread")
    @Primary
    public DataSource datasource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = TX_MANAGER)
    @Primary
    public PlatformTransactionManager txManagerUser() {
        return new DataSourceTransactionManager(datasource());
    }

    @Bean(name = DatasourceNewsReadConfig.SQL_SESSION_FACTORY_NAME)
    @Primary
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {

        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(datasource());
        sqlSessionFactoryBean.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
        sqlSessionFactoryBean.setMapperLocations(this.properties.getMapperLocations());
        return sqlSessionFactoryBean.getObject();
    }

}

 

你可能感兴趣的:(注解)