MyBatis-Spring-1.2.0 新增了两种新的扫描映射器 Mapper 接口的方法:
 使用mybatis:scan/元素
 使用@MapperScan 注解(需要Spring3.1+版本)
mybatis:scan
mybatis:scan元素将在特定的以逗号分隔的包名列表中搜索映射器 Mapper 接口。 使用这个新的 MyBatis-Spring 名空间你需要添加以下的 schema 声明:
<beans xmlns=“http://www.springframework.org/schema/beans”
 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
 xmlns:mybatis=“http://mybatis.org/schema/mybatis-spring”
 xsi:schemaLocation=“http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://mybatis.org/schema/mybatis-spring
 http://mybatis.org/schema/mybatis-spring.xsd”>
 <mybatis:scan base-package=“com.mybatis.x.mappers” />
 
mybatis:scan 元素提供了下列的属性来自定义扫描过程:
 annotation : 扫描器将注册所有的在 base-package 包内并且匹配指定注解的映射器 Mapper 接口。
 factory - ref : 当 Spring 上 下 文 中 有 多 个 SqlSessionFactory 实 例 时 , 需 要 指 定 某 一 特 定 的
 SqlSessionFactory 来创建映射器 Mapper 接口。正常情况下,只有应用程序中有一个以上的数据源
 才会使用。
 marker - interface : 扫描器将注册在 base-package 包中的并且继承了特定的接口类的映射器 Mapper 接
 口
 template - ref : 当 Spring 上下文中有多个 SqlSessionTemplate 实例时,需要指定某一特定的
 SqlSessionTemplate 来创建映射器 Mapper 接口。 正常情况下,只有应用程序中有一个以上的数据源
才会使用。
name-generator:BeannameGenerator 类的完全限定类名,用来命名检测到的组件。
MapperScan
 Spring3.x+版本支持使用@Configuration 和@Bean 注解来提供基于 Java 的配置。如果使用基于java的配置,可以使用@MapperScan 注解来扫描映射器 Mapper 接口。 @MapperScan 和mybatis:scan/工作方式
 相同,并且也提供了对应的自定义选项。
@Configuration
 @MapperScan(“com.mybatis.x.mappers”)
 public class AppConfig
 {
 @Bean
 public DataSource dataSource()
 {
 return new PooledDataSource(“com.mysql.jdbc.Driver”,
 “jdbc:mysql://localhost:3306/test”, “root”, “root”);
 }
 @Bean
 public SqlSessionFactory sqlSessionFactory() throws Exception
 {
 SqlSessionFactoryBeansessionFactory = new
 SqlSessionFactoryBean();
 sessionFactory.setDataSource(dataSource());
 return sessionFactory.getObject();
 }
 }
@MapperScan 注解有以下属性供自定义扫描过程使用 :
 - annotationClass : 扫描器将注册所有的在 base-package 包内并且匹配指定注解的映射器 Mapper 接口。
 - markerInterface : 扫描器将注册在 base-package 包中的并且继承了特定的接口类的映射器 Mapper 接口
 - sqlSessionFactoryRef : 当 Spring 上 下 文 中 有 一 个以 上 的 SqlSesssionFactory 时 , 用 来 指 定 特 定
 SqlSessionFactory
 - sqlSessionTemplateRef : 当 Spring 上下文中有一个以上的 sqlSessionTemplate 时,用来指定特定
 sqlSessionTemplate
 -nameGenerator :BeanNameGenerator 类用来命名在 Spring 容器内检测到的组件。
 basePackageClasses :basePackages() 的类型安全的替代品。 包内的每一个类都会被扫描。
 basePackages : 扫描器扫描的基包,扫描器会扫描内部的 Mapper 接口。 注意包内的至少有一个方法声明的才会被
注册。 具体类将会被忽略。
当然还可以在 applicationContext.xml 配置如下
<bean class=“org.mybatis.spring.mapper.MapperScannerConfigurer”>
 <property name=“basePackage” value=“com.mybatis3.mappers” />
 
使用 MapperScannerConfigurer 来扫描包 package (“com.mybatis3.mappers”)下的所有 映射器 Mapper 接口,并自动地注册
版本声明:原创文章,转载请注明出处










