一:Spring整合MyBatis的准备工作:
(1.)在项目中加入Spring,ByBatis及整合相关的jar文件
(2.)建立开发目录结构,创建实体类
(3.)创建数据访问接口
(4.)配置SQL映射文件
(5.)配置MyBatis配置文件
二:实现Spring对MyBatis的整合
(1.)配置数据源
(2.)配置SqlSessionFactoryBean
(3.)使用SqlSessionTemplate实现数据库的操作
(4.)编写业务逻辑代码并测试
三:注入映射器实现
(1.)使用MapperFactoryBean主题映射器
规则:1.映射器命名空间和映射器接口的名称相同
2.映射器元素的id和映射器接口方法相同
(2.)使用MapperScannerConfigurer注入映射器(批量注入)
规则:1.basePackage属性中可以包含多个包名,多个包名之间使用逗号或者分号隔开
2.MapperScennerConfigurer会为所有有他创建的映射器实现开启自动配置
3.若环境中出现于不同目的的配置了多个SqlSessionFactory实例,自动配置将无法完成
四:配置声明式事务
(1.)事务管理器类DataSourceTransactionManager
增强事务:<tx:advice>
(2.)事务传播机制:
REQUIRED:默认值
REQUIRES_NEW:表示总是开启一个新的事务
MANDATORY:表示如果存在一个事务则支持当前事务,如果没有则抛出异常
NESTED:表示如果存在当前一个活动事务,则创建一个事务作为当前事物的嵌套事务,如果没有事务,该取值与REQUIRED相同
SUPPORTS:表示如果存在一个事务,则支持当前事务,如果没有当前事务,则安排这个事务挂起,然后执行该方法
NEVER:表示总以非事务方法执行。如果存在一个活动事务,则抛出异常
(3.)事务配置步骤
导入tx和aop命名空间
定义事务管理器Bean并为其注入数据源Bean
通过<tx:advice> 配置事务增强,绑定事务管理器并针对不同方法定义事务规则
配置切面,将事务增强与方法切入点组合
五:使用注解实现声明事务处理:
@transactional注解的属性
Propagation:枚举型
Isolation:枚举型
readOnly:布尔型
timeout:int类型
rollbackFor:一组Class累的实例,必须是Throwable的子类
rollbackForClassName:一组Class类的名称,必须是Throwable的子类
noRollbackFor:一组Class类的实例,必须是Throwable的子类
noRollbackForClassName:一组Class类的名称,必须是Throwable的子类。
六:Spring配置补充
一:灵活配置DataSource
(1) 使用属性文件配置数据源
(2) 使用JNDI数据源
(3) Spring中的Bean的作用域问题,
Singleton:默认值
Prototype:每次从容器中获取Bean时,都会创建一个新的实体类
Request:用于Web应用环境,针对每次HTTP请求都会创建一个实例
Session:用于Web应用环境,同一个话共享同一个实例,不同的会话使用不同的实例
Global session:仅在Portle的Web应用中使用,同一个全局会话共享一个实例。对于非Portlet环境。等同于session
二:拆分Spring配置文件
- 拆分的方法
(1.)如果一个开发人员负责一个模块,我们采用共用配置(包含数据源,事务等)+每个系统模块一个单独配置文件(包名Dao,Service及web控制器)的形式。
(2.)如果开发是按照分层进行的分工,我们采用功用配置(包含数据源,事务等)+Dao Bean配置+业务逻辑Bean配置+web控制器配置的形式
共同学习,写下你的评论
评论加载中...
作者其他优质文章