`
Hsiang
  • 浏览: 29009 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

MapperScannerConfigurer

阅读更多

    本文转自 http://hi.baidu.com/v5759107/blog/item/58d88ccc065de90d01e928c3.html 

   内容没有亲身调试,若有错误,欢迎留言,讨论

 

  没有必要在Spring的XML配置文件中注册所有的映射器。相反,你可以使用一个MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBeans。要创建MapperScannerConfigurer,可以在Spring的配置中添加如下代码:

 

Xml代码  
  1. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  2.     <propery name="basePackage" value="org.mybatis.spring.sample.mapper"/>  
  3. </bean>  

 

basePackage属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。

注意,没有必要去指定SqlSessionFactory或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。但是,如果你使用了一个以上的DataSource(因此,也是多个的SqlSessionFactory),那么自动装配可能会失效。这种情况下,你可以使用sqlSessionFactory或sqlSessionTemplate属性来设置正确的工厂/模板。

 

MapperScannerConfigurer支持过滤由指定的创建接口注解创建映射器。annotationClass属性指定了要寻找的注解名称markerInterface属性指定了要寻找的父接口。如果两者都被指定了,加入到接口中的映射器会匹配两种标准。默认情况下,这两个属性都是null,所以在基包中给定的所有接口可以作为映射器加载。

 

被发现的映射器将会使用Spring对自动侦测组件默认的命名策略来命名。也就是说,如果没有发现注解,它就会使用映射器的非大写的非完全限定类名。但是如果发现了@Component或JSR-330@Named注解,它会获取名称

分享到:
评论
8 楼 q92380906 2014-05-07  
在SSI整合中,使用【MapperScannerConfigurer】会报【org.springframework.beans.factory.BeanCreationException:】这个错误,不使用【MapperScannerConfigurer】,而使用笨方法    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
         <property name="mapperInterface" value="com.gxm.testssi.common.mapper.UserMapper"></property>
         <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>不报错,请问使用【MapperScannerConfigurer】还需要注意一些什么,还有别的什么需要追加。
7 楼 穷忙傻乐 2013-09-11  
这种方式怎么分页?
6 楼 Hsiang 2013-07-10  
need_faith 写道
使用MapperScannerConfigurer过程中有个问题,我的controller、service采用注解方式,即@Service @Resource,采用默认自动装配方式,使用接口的唯一实现类创建实例,但是使用了Mybatis的MapperScannerConfigurer自动发现Mapper的配置文件之后,以上注解方式发现找不到唯一实例


  @Resource 优先取注入别名,找不到后再按类型;
  @Autowired 只按类型获取
5 楼 Hsiang 2013-07-10  
hft24dq 写道
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.mybatis.spring.mapper.MapperScannerConfigurer] for bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [applicationContext-mybatis.xml]; nested exception is java.lang.ClassNotFoundException: org.mybatis.spring.mapper.MapperScannerConfigurer

请问这个异常是什么原因?

首选确保你的spring-ibatis 兼容包存在,jar的依赖关系;
如1楼说的,mybatis会自动匹配同名的mapper文件,但这映射文件需要跟xxxmapper.class在同包下,也就是编译后;
4 楼 hft24dq 2013-07-05  
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.mybatis.spring.mapper.MapperScannerConfigurer] for bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [applicationContext-mybatis.xml]; nested exception is java.lang.ClassNotFoundException: org.mybatis.spring.mapper.MapperScannerConfigurer

请问这个异常是什么原因?
3 楼 need_faith 2013-05-30  
使用MapperScannerConfigurer过程中有个问题,我的controller、service采用注解方式,即@Service @Resource,采用默认自动装配方式,使用接口的唯一实现类创建实例,但是使用了Mybatis的MapperScannerConfigurer自动发现Mapper的配置文件之后,以上注解方式发现找不到唯一实例
2 楼 Hsiang 2012-11-26  
lingjiaju 写道
使用MapperScannerConfigurer过程中有个问题,我发现不需要写DAO实现类了,mybatis会自动匹配同名的mapper文件,然后连接也不用手动获取了,但却无法更改sql执行模式了,我找不到批量提交batch模式的设置,求解?

当你需要使用batch模式时,需要指定sqlSessionTemplate,在它的构造方法指定:
如:
   <bean class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactoryMember" />
<constructor-arg index="1" value="BATCH" />
<constructor-arg index="2"><null /></constructor-arg>
</bean>
指定executorType 类型:BATCH
1 楼 lingjiaju 2012-11-19  
使用MapperScannerConfigurer过程中有个问题,我发现不需要写DAO实现类了,mybatis会自动匹配同名的mapper文件,然后连接也不用手动获取了,但却无法更改sql执行模式了,我找不到批量提交batch模式的设置,求解?

相关推荐

    MyBatis-MapperScannerConfigurer配合

    《MyBatis-MapperScannerConfigurer配合详解》 在MyBatis框架中,MapperScannerConfigurer是一个非常重要的工具类,它能够帮助我们自动扫描指定包下的Mapper接口,并将其注册到SqlSessionFactory中,极大地简化了...

    详解 MapperScannerConfigurer之sqlSessionFactory注入方式

    在MyBatis-Spring整合中,`MapperScannerConfigurer`是一个非常重要的组件,它的主要作用是自动扫描指定包下的Mapper接口,并将这些接口动态地实现为DAO层的实现类,然后将这些实现类注入到Spring容器中,从而避免...

    利用JAVA代理Proxy机制实现spring对ibaits的MapperScannerConfigurer功能

    利用JAVA代理Proxy机制实现spring对ibaits的MapperScannerConfigurer功能 详细:http://blog.csdn.net/wq105032007067/article/details/8812598

    spring-mybatixDemo:spring集成mybatis传统代码,只需配置sqlSessionFactory、mapperScannerConfigurer和datasource即可

    2. **MapperScannerConfigurer**: 这是Spring的一个Bean,用于扫描指定包下的Mapper接口,将它们自动注册到Spring容器中。这样,Spring可以管理这些Mapper接口的实例,方便我们在服务层通过@Autowired注解进行依赖...

    Mybatis中文版教程非常详细.适合初学者

    除了显式地配置每个映射器接口外,还可以通过`MapperScannerConfigurer`来实现自动扫描和配置映射器接口。 ```xml &lt;bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&gt; ``` #### 七、使用...

    03 mybatis高级(3) 1

    【部分内容】:本课程主要讲解MyBatis的高级特性,包括SqlSessionFactoryBean、MapperFactoryBean和MapperScannerConfigurer这三个核心类的源码分析。同时,课程还涉及到了MyBatis的插件开发原理,如Interceptor拦截...

    4、spring接管mybatis逆向代码1

    MapperScannerConfigurer configurer = new MapperScannerConfigurer(); configurer.setBasePackage("com.duodian.admore.dao.*"); return configurer; } @Bean public SqlSessionFactoryBean ...

    spring+mybatis-plus集成

    MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage("com.example.mapper"); // 替换为你的Mapper接口所在包 return ...

    使用mybatis进行数据处理的四种方式

    本文将深入探讨使用MyBatis进行数据处理的四种主要方式:SqlSessionTemplate、SqlSessionDaoSupport、MapperFactoryBean以及MapperScannerConfigurer。这四种方式各有特点,适用于不同的场景和需求。 ### ...

    SpringBoot整合Mybatis

    MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); scannerConfigurer.setBasePackage("com.example.demo.mapper"); return scannerConfigurer; } } ``` 最后,我们可以在Service层...

    spring与mybatis三种整合方法

    `MapperScannerConfigurer` 是Spring的一个扫描器,用于在Spring启动时自动查找指定包下的所有Mapper接口,并将其转换为`MapperFactoryBean`。这样,Spring容器就能管理这些Mapper接口,使得我们可以在业务逻辑中...

    spring boot mybatis 多数据源与缓存.zip

    MapperScannerConfigurer configurer = new MapperScannerConfigurer(); configurer.setBasePackage("com.example.primary.mapper"); configurer.setSqlSessionFactoryBeanName("primarySqlSessionFactory"); //...

    mybatis-3.5.0源码

    MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); scannerConfigurer.setBasePackage("com.example.myapp.mapper"); // 替换为你的Mapper接口所在的包 return scannerConfigurer; }...

    springboot-mybatis集成demo

    MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer(); scannerConfigurer.setBasePackage("com.example.demo.mapper"); return scannerConfigurer; } } ``` 完成以上步骤后,我们就...

    spring-boot-starter-mybatis-spring-boot-2.1.3.tar.gz

    MapperScannerConfigurer configurer = new MapperScannerConfigurer(); configurer.setBasePackage("com.example.demo.mapper"); // 替换为你的Mapper接口包路径 return configurer; } } ``` 4. 编写Mapper...

    spring整合mybatis

    - **配置文件**:整合的关键在于配置Spring的Bean定义,包括数据源、SqlSessionFactory、MapperScannerConfigurer以及MyBatis的SqlSessionTemplate或SqlSessionDaoSupport。 2. **数据源配置** - **DataSource**...

    Spring Boot中整合MyBatis

    MapperScannerConfigurer configurer = new MapperScannerConfigurer(); configurer.setBasePackage("com.example.primary.mapper"); configurer.setSqlSessionFactoryBeanName("primarySqlSessionFactory"); ...

    mybatis-spring

    MyBatis-Spring 的主要组件包括 SqlSessionFactoryBean、SqlSessionTemplate 和 MapperScannerConfigurer。 1. SqlSessionFactoryBean:它是 Spring 中用于创建 SqlSessionFactory 的 Bean,它会读取配置文件,创建...

    Springboot+MySql+Mybatis多数据源整合及其使用

    MapperScannerConfigurer configurer = new MapperScannerConfigurer(); configurer.setBasePackage("com.example.demo.mapper.primary"); configurer.setSqlSessionFactoryBeanName("primarySqlSessionFactory")...

    myibatis+spring源码

    2. MyBatisNamespaceParser:它是MyBatis-Spring中的一个XML解析器,用于处理Spring配置文件中的mybatis标签,解析MapperScannerConfigurer,自动扫描并加载Mapper接口。 3. SqlSessionTemplate:这是MyBatis-...

Global site tag (gtag.js) - Google Analytics