Spring与MyBatis整合

SpringMyBatis整合

一、概述

MyBatisSpring进行整合,主要解决的问题就是将SqlSessionFactory对象交由Spring容器来管理,所以,该整合,只需要将SqlSessionFactory的对象生成器SqlSessionFactoryBean注册在Spring容器中,再将其注入给Dao的实现类即可完成整合。

二、Mapper动态代理实现整合

1)导入相关jar包、定义映射文件mapper

Dao 接口的包中创建 MyBatis 的映射文件 mapper,命名与接口名相同,本例为IStudentDao.xmlmapper 中的 namespace 取值也为 Dao 接口的全限定性名。

   

2)定义MyBatis主配置文件

src下定义Mybatis的主配置文件,命名为mybatis.xml

注意两点:

1,主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器来管理了。  

2,这里对 mapper 映射文件的注册,使用package标签,即只需给出 mapper 映射文件所在的包即可。因为 mapper 的名称与 Dao 接口名相同,可以使用这种简单注册方式。这种方式的好处是,若有多个映射文件,这里的配置也是不用改变的。当然,也可使用resource标签方式。

  

3)定义Spring配置文件

  • 注册SqlSessionFactoryBean

 

使用 MapperFactoryBean 生成 Dao 代理对象

由于使用 Mapper 动态代理方式没有 Dao 实现类,所以 Dao 的实现类对象由代理工厂生成:MapperFactoryBean 映射工厂 Bean。

 

添加事务配置

 

三、支持扫描的 Mapper 动态代理实现整合

Mapper 扫描配置器 MapperScannerConfigurer 会自动生成指定的基本包中 mapper 的代理对象。该 Bean 无需设置 id 属性。此时需要删除 MapperFactoryBean 的配置。

 

Service 注入接口名

Service 注入 Mapper 代理对象时需要注意,由于通过 Mapper 扫描配置器MapperScannerConfigurer 生成的 Mapper 代理对象没有名称,所以在向 Service 注入 Mapper代理时,无法通过名称注入。但可通过接口的简单类名注入,因为生成的是这个 Dao 接口的对象,这是多态的应用。

  

Dao

 

DaoXml

 

实体类

 

Service接口层

 

Service实现类

 

Jdbc.properties工具类

 

测试类

 

二.注解方式

 

Dao添加注解

 

Service实现层添加注解

 

原文地址:https://www.cnblogs.com/qinzhenyu/p/11799312.html