文档章节

Spring - MapperFactoryBean

lemos
 lemos
发布于 2016/11/18 09:49
字数 616
阅读 32
收藏 0

一、注入映射器

官网介绍

为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。

MapperFactoryBean 动态代理控制着开放和关闭 session,翻译任意的异常到 Spring 的 DataAccessException 异常中。此外,如果需要或参与到一个已经存在活动事务中,代理将 会开启一个新的 Spring 事务。

二、MapperFactoryBean

将指定的映射器接口加入到spring中

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

注意:
MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。 因为代理创建在运行时环境中(Runtime) ,那么指定的映射器必须是一个接口,而 不是一个具体的实现类。

如果 UserMapper 有一个对应的 MyBatis 的 XML 映射器文件, 如果 XML 文件在类路径的 位置和映射器类相同时, 它会被 MapperFactoryBean 自动解析。 没有必要在 MyBatis 配置文 件 中 去 指 定 映 射 器 , 除 非 映 射 器 的 XML 文 件 在 不 同 的 类 路 径 下(参考前面的文章)。

三、MapperScannerConfigurer

可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 (mapper)并 自 动 将 它 们 创 建 成 MapperFactoryBean。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="org.mybatis.spring.sample.mapper" />
</bean>

注意:

  • basePackage 属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径。

  • 不需要指定SqlSessionFactory , 因为 MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。

  • 但是,如果你使用了一个以上的 DataSource ,那么自动装配可能会失效。可以使用sqlSessionFactoryBeanName 属性来设置正确的 bean 名 称来使用。

特别注意:由于bean 的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

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

注意:这里不要使用 ref会导致jdbc.properties 文件先被读取,以致于在使用sqlSessionFactorybean时,jdbc.properties 文件不会被再次读取。

本文转载自:http://blog.csdn.net/qq_34232804/article/details/53143080

共有 人打赏支持
lemos
粉丝 8
博文 184
码字总数 92482
作品 0
芜湖
后端工程师
私信 提问
Mybatis spring and mybatis and mybatis-springboot-starter

Mybatis spring and mybatis and mybatis-springboot-starter 这篇博文主要涉及到的是mybatis是怎么集成到spring已经spring boot的,有关mybatis的用法及其自身的源码 设计,我会到开另一个文...

来福马斯特
2018/04/25
0
0
mybatis-spring:mybatis在spring中的使用

当我们想在 spring 项目中使用 mybatis 的时候就需要 mybatis-spring 了,它可以让 spring 完美的整合 mybatis 代码。使用这个类库中的类,spring 将会加载必要的 mybatis 工厂类和 session ...

非摩尔根
01/08
0
0
Mybatis-spring整合源码解析

原文:http://my.oschina.net/doctor2014/blog/411594 Mybatis整合spring,主要通过两种途径:一种是基于xml配置的,一种基于java config 配置。 一种是基于xml配置的。这种方式通过解析xml...

Beaver_
2015/05/07
2.2K
0
Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory

一、摘要 上两篇文章分别介绍了Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法 和 Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言),这篇文...

如月王子
2015/03/25
0
0
MyBatis接口(Bean)与配置信息(Mapper)绑定

目的 MyBatis的XML配置文件解析成JAVA类并在内存中存储,但是在程序运行时需要对应的类去调用,而相应的调用类还没有实例化,现在流行的都是使用Spring去管理需要的对象,Spring提供2种方式,...

tara_qri
2015/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL查询执行

当我们希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理方式...

Linux就该这么学
11分钟前
1
0
爱可生开源社区官网正式发布啦!

近期大事记 2018/12/31 DBLE年度报告发版 2019/01/07 DBLE 2.18.12.0 新版发布,修复 issue 60+ 2019/01/09 DBLE 2.18.12.0 Release Notes 详细解读 2019/01/15 DBLE Logo 首发 + DBLE 团队迎......

爱可生
19分钟前
1
0
【分布式缓存系列】Redis实现分布式锁的正确姿势

一、前言   在我们日常工作中,除了Spring和Mybatis外,用到最多无外乎分布式缓存框架——Redis。但是很多工作很多年的朋友对Redis还处于一个最基础的使用和认识。所以我就像把自己对分布式...

编辑之路
30分钟前
1
0
3.x 在Unix系统上面启动守护进程

12.14 在Unix系统上面启动守护进程 问题 你想编写一个作为一个在Unix或类Unix系统上面运行的守护进程运行的程序。 解决方案 创建一个正确的守护进程需要一个精确的系统调用序列以及对于细节的...

dragon_tech
30分钟前
2
0
ES6中的class

class Point {constructor(x, y, z) {this.x = x;this.y = y;this.z = z;}toString() {return `${this.x},${this.y}`}get prop() {return `获取的是get${this.z...

chinahufei
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部