MayBatis与Spring的整合
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的整合的更多相关文章
- struts2 spring mybatis 整合(test)
这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...
- 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】
一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...
- 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)
前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...
- 由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”
在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Myb ...
- spring+websocket整合
java-websocket的搭建非常之容易,没用框架的童鞋可以在这里下载撸主亲自调教好的java-websocket程序: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...
- Hibernate 与 Spring 的整合
刚刚学习了hibernate和Spring的整合,现在来总结一下. 以实现一个功能为例,与大家分享一下整个过程. 需要实现的功能:建立一个Person类,该类包括name,sex,age,birtha ...
- Spring与Struts2整合VS Spring与Spring MVC整合
Spring与Struts2整合,struts.xml在src目录下 1.在web.xml配置监听器 web.xml <!-- 配置Spring的用于初始化ApplicationContext的 ...
- struts2+hibernate-jpa+Spring+maven 整合(1)
1.0.0 struts2 与 spring 的整合. 1.1.0 新建maven工程 , 编写pom.xml ,这里只需要简单的添加 一个组件就够了: 在myeclipse 生成的pom.xml 添 ...
- ASP.NET MVC Spring.NET 整合
请注明转载地址:http://www.cnblogs.com/arhat 在整合这三个技术之前,首先得说明一下整合的步骤,俗话说汗要一口一口吃,事要一件一件做.同理这个三个技术也是.那么在整合之前,需 ...
随机推荐
- Web前端开发学习笔记(一)
最近在复习Web前端的开发知识,于是就把大二上学期曾经学过的东西拿出来复习一遍,把自己在做曾经的作业时遇到有意义的点都记下来吧. Homework1:http://my.ss.sysu.edu.cn/ ...
- web.xml<context-param>与<init-param>的作用与区别
<context-param>的作用:web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件we ...
- feather mac 问题小结
feater 依赖php及jdk 1.自带的php没有cgi ,索性直接装个新的 修改环境变量,并使其生效,验证方式是 打印版本信息: php -v PHP 7.1.13 (cli) (built: ...
- 20145314郑凯杰 《Java程序设计》第5周学习总结
20145314郑凯杰 <Java程序设计>第5周学习总结 教材学习内容总结 托管的代码: 电脑上的代码: try与catch 简单来说,try与catch是两个块,java的程序会把正常 ...
- Linux系统调用怎么和内核或底层驱动交互的
学习Linux系统下驱动程序开发已有大半年时间,心中一直有个疑惑:那就是诸如open.write.read等系统调用是怎么和内核或底层驱动建立起联系的呢?今天将自己的一些粗略的理解总结如下. ...
- LeetCode (262):Nim Game
You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...
- 使用Spring注解注入属性
本文介绍了使用Spring注解注入属性的方法.使用注解以前,注入属性通过类以及配置文件来实现.现在,注入属性可以通过引入@Autowired注解,或者@Resource,@Qualifier,@Pos ...
- webservice使用注解修改WSDL内容
首先看我们没有修改前的WSDL内容 此时服务端的类 修改后的 注解如下 package com.xiaostudy; import javax.jws.WebMethod; import javax. ...
- sa learning
后缀数组之前一直在给队友搞,但是这个类太大了,预感到青岛八成会有,于是自己也学习一下,记录一下做题的历程 所用的模板暂时来自于队友的倍增nlogn da算法 int t1[maxn] , t2[max ...
- 安装mysql数据库中的技巧、错误排查
针对解压版本5.7.16(博主使用的这个版本.在某些低版本中部分命令失效) 一.安装.初始化data目录(解压版解压后没有data目录) 安装:配置path环境变量,然后管理员运行命令提示符cmd ...