整合思路
MyBatis到底要做什么事情
SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession,操作数据库;
主要完成对数据库的操作;
Spring到底做什么事情
管理bean
管理bean和bean之间的关系
SM整合
Spring管理SqlSessionFactory,有对应的bean
Spring对于数据操作的支持:从Spring管理的factory中得到SqlSession对象
SqlSession操作数据—MyBatis
有哪些bean在Spring中
DataSource:数据源
SqlSessionFactory:连接工厂
XXXDao:数据操作,SqlSession,后续service也要找Spring要dao的bean;
它们的关联关系:SqlSessionFactory需要用DataSource这个bean来建立连接,代表Spring中的依赖注入;XXXDao需要SqlSessionFactory提供SqlSession来实现数据操作,实现依赖注入;
整合步骤:
引入jar包,搭建代码框架;
实现Spring和MyBatis的整合可以通过两种方式实现,下面将一一介绍:
基于映射的整合
DataSource:在Spring的核心配置文件中配置
数据库的相关设置
sessionFactory:Build读取MyBatis的核心配置文件:用于设置数据库环境/注册映射文件
依赖DataSource这个bean,有数据源才能创建
MyBatis的核心配置文件提供要注册的映射文件
Dao:使用SqlSession来完成数据操作
SqlSession是来自sessionFactory
步骤:
1、配置Spring的核心配置文件
2、实现MyBatis的mapper/dao接口,在conf中注册mapper
3、提供dao层的实现类操作数据库,dao实现类中有一个属性sqlSessionFactory
4、编写dao实现类;继承daoSupport类,从而才能实现sessionFactory的属性注入
5、编写测试类;
基于mapper代理的整合
Mapper代理方式:
Mapper接口
Mapper映射文件
同名且同包,从而可以根据接口和映射文件生成代理类
步骤:
1、在Spring的核心配置文件中,配置DataSource和sessionFactory
2、在Spring中配置dao代理类的bean
3、针对每一个接口,配置一个代理类
4、编写测试类
还可以使用扫描包的方式自动生成mapper代理;注入sqlSessionFactory,默认包下的所有接口都要生成代理
PS:因作者能力有限,如有误还请谅解;