MyBatis与Spring的整合

Spring整合MyBatis的准备工作

在项目中加入Spring、myBatis及整合相关的JAR文件
在这里插入图片描述

实现Spring和MyBatis整合

要在Spring中使用MyBatis,需要在Spring的配置文件中定义一些类
SqlSessionFactoryBean
为整合应用提供SqlSession对象资源
SqlSessionTemplate
负责管理MyBatis的SqlSession,调用SQL映射语句,实现对数据库的访问
MapperFactoryBean
根据指定Mapper接口生成Bean实例
MapperScannerConfigurer
根据指定包批量扫描Mapper接口并生成实例
Spring和MyBatis的整合步骤
在这里插入图片描述
需求说明:
实现Spring整合MyBatis
使用SqlSessionTemplate实现根据条件(用户名称、角色ID)查询用户列表

分析:
配置数据源
配置SqlSessionFactoryBean
使用SqlSessionTemplate实现数据库的操作
编写业务逻辑代码并测试

注入映射器实现

使用MapperFactoryBean注入映射器
如果仅使用SqlSessionTemplate执行基本的数据访问操作,而不包含其他非MyBatis的工作,可以不必手工编码使用SqlSessionTemplate或SqlSessionDaoSupport来实现此类DAO。MyBatis-Spring提供了MapperFactoryBean,能够以配置的方式生成映射器实现并注入给业务组件。

注意:
SQL映射文件中须遵循以下命名原则:
(1)映射的命名空间和映射器接口的名称相同。
(2)映射元素的id和映射器接口的方法相同

使用MapperScannerConfigurer注入映射器
在Spring配置文件中使用MapperFactoryBean对映射器做配置,简化了DAO模块的编码,不过如果映射器很多,相应的配置项也会很多。为了简化配置工作量,MyBatis-Spring中提供了MapperScannerConfigurer,它可以扫描指定包中的接口并将它们直接注册为MapperFactoryBean。

注意:
Spring配置文件中需要引入context命名空间
测试代码与之前相同

小结:
MapperScannerConfigurer与@Autowired注解或@Resource注解配合使用,自动创建映射器实现并注入给业务组件,能够最大限度地减少DAO组件与业务组件的编码和配置工作。

为业务层添加声明式事务

Spring提供了声明式事务处理机制,它基于AOP实现,无须编写任何事务管理代码,所有工作全在配置文件中完成。这意味着与业务代码完全分离,配置即可用,降低了开发和维护的难度。

配置声明式事务
注意:
配置DataSourceTransactionManager时,要为其注入事先定义好的数据源组件
可以通过tx:advice标签配置事务增强,设定事务的属性,为不同的业务方法指定具体的事务规则。
在这里插入图片描述
在tx:advice标签内可以设置id属性和transaction-manager属性。其中transaction-manager属性引用一个事务管理器Bean
注意:
transaction-manager属性的默认值是transactionManager,则可以不指定该属性值
在这里插入图片描述
注意:
aop:advisor的advice-ref属性引用的是通过tx:advice标签设定了事务属性的组件
至此,Spring的声明式事务就配置完成了,最后再总结一下配置的步骤。
(1)导入tx和aop命名空间。
(2)定义事务管理器Bean,并为其注入数据源Bean
(3)通过tx:advice配置事务增强,绑定事务管理器并针对不同方式定义事务规则
(4)配置切面,将事务增强与方法切入点组合

使用注解实现声明式事务处理
在业务实现类上添加@Transactional注解即可为该类的所有业务方法统一添加事务处理。如果某一业务方法需要采用不同的事务规则,可以在该业务方法上添加@Transactional注解单独进行设置。

@Transactional注解也可以设置事务属性的值,默认的@Transactional设置如下。
事务传播设置是PROPAGATION_REQUIRED
事务隔离级别是ISOLATION_DEFAULT
事务是读/写
事务超时默认是依赖于事务系统的,或者事务超时没有被支持
任何RuntimeException将触发事务回滚,但是任何checked Exception将不触发事务回滚。

这些默认的设置当然也是可以改变的。@Transactional注解的各属性如表
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值