整合的主要工作就是把mybatis框架使用中所涉及的核心组件配置到spring容器中,交给spring来创建和管理。
业务逻辑对象依赖基于mybatis技术实现的dao对象,核心是获取sqlsession实例。
spring和mybatis整合步骤
1、配置datasource,在spring中配置数据源。流行的数据源实现有dbcp、c3p0、proxool,它们都实现了连接池功能
2、配置sqlsessionfactorybean,sqlsessionfactorybean封装了使用sqlsessionfactorybulider创建sqlsessionfactory的过程,通过在spring配置文件中配置sqlsessionfactorybean获得sqlsessionfactory实例。
3、sqlsessionetemplate进行持久化操作,sqlsessiontemplate类实现了mybatis的sqlsession接口可以替换mybatis中原有的sqlsession实现类来提供数据库访问操作。
mybatis-spring提供了sqlsessiontemplate模板类操作数据库,常用方法有selectlist()、insert()、update()等,使用getMapper(Class Type)可以直接访问接口实例,能够减少错误发生,另外可以不用写dao的实现类,sqlsessiontemplate是线程安全的,可以以单例模式配置并被多个dao对象共用。
4、完善代码并测试
注入映射器的两种方式
使用MapperFactoryBean能够以配置的方式得到映射器实现,简化dao开发。前提是保证映射命名空间名和接口名称相同,以及映射元素的id和接口方法相同
使用mapperscannerconfigurer可以递归扫描basepackage所指定的包下的所有接口类,在service中可以使用@autowired或@resource注解注入这些映射接口的bean
spring和mybatis整合可以采用spring的事务管理,包括使用xml和注解配置事务管理
添加声明式事务
spring提供了声明式事务处理机制,基于aop实现,无序编写任何事务管理代码,所有的工作全在配置文件中完成,配置即可用,与业务代码完全分离,降低了开发维护难度。
事务管理器datasourcetransactionmanager
标签tx:method,name属性必需,用于指定匹配的方法。其他属性列举如下:
propagation,事务传播机制,required默认值,事务存在则支持,不存在则开启一个新的事务;
supports,事务存在则支持,不存在按非事务方式执行
lsolation,事务隔离等级,即当前事务和其他事务的隔离程度,在并发事务处理的情况下需要考虑设置。
rollback-for,设定事务发出回滚的异常类型
使用propertyplaceholdconfigurer可以加载属性文件.properties,实现灵活的配置
spring可以从环境中获取jndi资源
spring配置bean组件时,可以指定singleton(默认值)、prototype、request、session、globalsession几种不同的作用域。singleton是默认作用域,默认情况下spring为每个bean仅创建一个实例,提高效率。对于存在线程安全问题的组件,可以使用prototype作用域,设置scope属性。其余三种作用域在web环境下使用
配置多个配置文件,可以通过数组方式或使用通配符(*)加载,也可以在spring主配置文件中使用方式引入多个配置文件