1. 步骤

第一步:导入相关的jar包(spring和mybatis)

mybatis-spring-*.jar

spring-jdbc-*.jar

spring-tx-*.jar

第二步:spring的配置文件

a)配置数据源

b)配置SqlSession工厂

c)配置SqlSessionTemplate

第三步:mybatis的配置文件

第四步:开发Mapper接口

第五步:Mapper映射文件

第六步:接口实现类

第七步:Service层开发

第八步:注册service和mapper的bean

第九步:测试.

2. bean配置.

<bean id="" class="bean的全限定名"/>

3. 测试的核心类和方法

ApplicationContext act = new ClasspathXMLApplicationContext("spring配置文件");

Bean obj =  act.getBean("id值");

4. MapperFactoryBean注入映射器

<bean id="xx" class="org.mybatis.spring.mapper.MapperFacotyBean">

<property name="mapperInterface" value="mapper接口名称"/>

<property name="sqlSessionFactory" ref="sqlSessionFactory的id"/>

</bean>

5. MapperScannerConfigurer 注入映射器

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.sm.dao"></property>

</bean>

注意:会读取整个包下的所有的Mapper接口和Mapper映射文件.

在注入Mapper时,的id为接口名的首字母小写.而且它会

自动注入SqlSessonFactoryBean.

6. 配置事务声明

第一步:定义事务管理器

<!-- 配置事务管理器(增强功能) -->

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource"></property>

</bean>

第二步: 建议者

<!-- 配置不同方法的事物处理功能(建议者)

<tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes>-->

<!-- 配置目标方法名 -->

<tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" timeout="-1" no-rollback-for="" rollback-for="RuntimeException"/>

<tx:method name="delete*"/>

<tx:method name="update*"/>

<tx:method name="find*" propagation="SUPPORTS"/>

<tx:method name="*"/>

<tx:attributes>

<tx:advice>

第三步: 配置切面

<aop:config>

<aop:pointcut expression="execution(* com.sm.service..*.*(..))" id="txPointcut"/>

<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>

</aop:config>

7. 事务属性

propagation:事务传播机制

REQUIRED:如果存在事务,则支持这个事务,如果不存在事务,就开启一个事务

REQUIRES_NEW:总会开启一个新事务

MANDATORY:如果存在事务,则支持这个事务,如果不存在事务,就抛出异常

NESTED:如果存在事务,会开启一个事务去嵌套,如果不存在事务,与REQUIRED一样

SUPPORTS:如果存在事务,则支持这个事务,如果不存在事务,就在非事务的环境下运行

isolation:事务隔离级别

DEFAULT:默认,使用数据库的默认事务隔离级别

READ_UNCOMMITTED:未提及读

READ_COMMITTED:提交读 (脏读)

REPEATABLE_READ:可重复读(不可重复读问题)

SERIALIZABLE:串行读(幻影读)

timeout:多少秒后超时.

readonly:事务只读

rollback-for:触发回滚的异常类型

no-rollback-for:不触发回滚的异常类型

8. 注解事务

第一步:开启事务注解,指定事务管理器

<tx:annotation-driven transaction-manager="txManager"/>

第二步:配置注解事务

@Transaction(属性=属性值,属性1=属性值1..)

MayBatis与Spring的整合的更多相关文章

  1. struts2 spring mybatis 整合(test)

    这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...

  2. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  3. 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)

    前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...

  4. 由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”

    在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Myb ...

  5. spring+websocket整合

    java-websocket的搭建非常之容易,没用框架的童鞋可以在这里下载撸主亲自调教好的java-websocket程序: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...

  6. Hibernate 与 Spring 的整合

    刚刚学习了hibernate和Spring的整合,现在来总结一下. 以实现一个功能为例,与大家分享一下整个过程. 需要实现的功能:建立一个Person类,该类包括name,sex,age,birtha ...

  7. Spring与Struts2整合VS Spring与Spring MVC整合

    Spring与Struts2整合,struts.xml在src目录下 1.在web.xml配置监听器 web.xml <!-- 配置Spring的用于初始化ApplicationContext的 ...

  8. struts2+hibernate-jpa+Spring+maven 整合(1)

    1.0.0 struts2 与 spring 的整合. 1.1.0 新建maven工程 , 编写pom.xml ,这里只需要简单的添加 一个组件就够了: 在myeclipse 生成的pom.xml 添 ...

  9. ASP.NET MVC Spring.NET 整合

    请注明转载地址:http://www.cnblogs.com/arhat 在整合这三个技术之前,首先得说明一下整合的步骤,俗话说汗要一口一口吃,事要一件一件做.同理这个三个技术也是.那么在整合之前,需 ...

随机推荐

  1. 20145310 《Java程序设计》第2周学习总结

    20145310 <Java程序设计>第2周学习总结 教材学习内容总结 第三章主要学习了java的基础语法. java中的基本类型主要可区分为,整数.字节.浮点数.字符与布尔.整数shor ...

  2. [BZOJ4016]最短路径树问题

    Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列字典序最 ...

  3. install opencv

    OpenCV是一个基于开源发行的跨平台计算机视觉库,它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉 ...

  4. kuangbin大佬模板(侵删)- hdu 2222

    2017-08-13 19:54:08 kuangbin的AC自动机模板 可以直接过 入门题目 hdu2222 #include<cstdio> #include<cstring&g ...

  5. MySQL索引最左原则

    通过实例理解单列索引.多列索引以及最左前缀原则 实例:现在我们想查出满足以下条件的用户id: 因为我们不想扫描整表,故考虑用索引. 单列索引: ALTER TABLE people ADD INDEX ...

  6. Java中的数据结构及排序算法

    (明天补充) 主要是3种接口:List Set Map List:ArrayList,LinkedList:顺序表ArrayList,链表LinkedList,堆栈和队列可以使用LinkedList模 ...

  7. Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011

    Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011 Problem A.Chocol ...

  8. 基础系列(1)之干掉JavaScript变量作用域

     今天去某顺公司面试,发现一些基础知识都不记得了,于是乎决定把js基础系列的全部梳理一遍,今天就整理下js变量作用域的相关基础知识点,配合最常遇到的笔试题阐述. 题一: var g = "a ...

  9. nginx页面不能正常访问排除方法

    nginx页面不能访问 nginx页面不能访问 检查服务端服务是否启动成功 在服务端使用wget和curl测试下返回的是否正常 浏览器wget或者curl等软件访问不了Ngixn页面 1. 检查服务端 ...

  10. 【转】正向代理vs反向代理

    正向代理 正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将 ...