文档章节

Spring - MapperFactoryBean

lemos
 lemos
发布于 2016/11/18 09:49
字数 616
阅读 21
收藏 0
点赞 0
评论 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
粉丝 6
博文 177
码字总数 86270
作品 0
芜湖
后端工程师
Mybatis spring and mybatis and mybatis-springboot-starter

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

来福马斯特
04/25
0
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
Spring与MyBatis整合

序言 在MyBatis学习中,我们会发现很多重复性的代码,例如: //创建连接 private SqlSessionFactory sqlSessionFactory = SessionFactoryUtils .getSessionfactory().getSqlSessionFactory(......

开源俱乐部
2014/07/09
0
0
SPRING 和 MYBATIS集成的WARN问题

spring和mybatis集成暴露出spring的问题 warn:Skipping MapperFactoryBean with name ‘appOperateRecordMapper’ and ‘XX.XX.XX.daor’ mapperInterface. Bean already defined with the s......

凯文加内特
2015/04/17
0
0
spring 和 mybatis集成的warn问题

warn:Skipping MapperFactoryBean with name 'appOperateRecordMapper' and 'XX.XX.XX.daor' mapperInterface. Bean already defined with the same name! 2014-07-22 18:02:29 WARN [main] ......

疯狂的兔子
2014/07/22
0
0
Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版

没有什么不可能 之前一直用的是自己搭建的spring 和mybatis的框架 但是里面有很多不足 1:mybatis下面的sql使用的mapper xml格式的时候 过于烦了 都要在xml下面修改 然后从启服务。 2:在使用...

杨中仁
2015/05/18
0
0
spring+mybatis 配置文件占位符不能解析的问题

在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.us...

疯狂的兔子
2014/04/03
0
0
springmvc - SqlSession

使用SqlSession 官网介绍 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个 session 之后,你可以使用它来执行映射语句,提交或回滚链接,最后,当不再需要它的时...

中柠檬
2016/11/18
4
0
Spring与Mybatis整合的MapperScannerConfigurer

本文将分析mybatis与spring整合的MapperScannerConfigurer的底层原理,之前已经分析过Java中实现动态,可以使用jdk自带api和cglib第三方库生成动态代理。本文分析的mybatis版本3.2.7,mybat...

tantexian
2016/04/07
87
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
26分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
27分钟前
1
0
TensorFlow 拟合异或 one-hot方式

增加隐含层数目 之前是按照计算出的数值按照0.5分为0和1,现在是算出向量,用维度较大的作为结果 import tensorflow as tfimport numpy as np# 网络结构:2维输入 --> 2维隐藏层 --> ...

阿豪boy
29分钟前
0
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
45分钟前
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
今天
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0
bash审计系统搭建

step1:使用saltstack工具bash部署>>>>>> # salt -N clienta state.sls audit step2:安装elasticsearch>>>>>> 注意: 1.不能以root用户进行启动,需要创建用户,并对解压的elasticsearch目录赋......

硅谷课堂
今天
0
0
Linux sar性能分析

Linux使用sar进行性能分析 sar简介 sar命令常用格式 sar常用性能数据分析 整体CPU使用统计-u 各个CPU使用统计-P 内存使用情况统计-r 整体IO情况-b 各个IO设备情况-d 网络统计-n sar日志保存-...

易野
今天
0
0
用 Python 实现打飞机,让子弹飞吧!

所用技术和软件 python 2.7 pygame 1.9.3 pyCharm 准备工作 安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。 下载好使用的素材。 技术实现 初始化 pygame 首先要...

猫咪编程
今天
0
0
MySQL的行锁和表锁

简单总结一下行锁和表锁。 行锁 每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 表锁 每次操作锁住整张表。开销小,加锁快;不会出...

to_ln
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部