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

本文深入解析了MyBatis中@MapperScan注解的使用方法及其属性,包括如何通过该注解进行接口扫描和注册,以及如何配置多数据源。详细介绍了annotationClass、sqlSessionTemplateRef、sqlSessionFactoryRef等属性的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 源码:

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

    String[] basePackages() default {};

    Class<?>[] basePackageClasses() default {};

    Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;

    Class<? extends Annotation> annotationClass() default Annotation.class;

    Class<?> markerInterface() default Class.class;

    String sqlSessionTemplateRef() default "";

    String sqlSessionFactoryRef() default "";

    Class<? extends MapperFactoryBean> 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();
    }

}

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值