spring与mybatis整合配置MapperFactoryBean 与 MapperScannerConfigurer区别

MapperFactoryBean 与 MapperScannerConfigurerhtml

Spring注入映射器java

使用mybatis进行数据处理的四种方式sql

①SqlSessionTemplate②SqlSessionDaoSupport③MapperFactoryBean④MapperScannerConfigurersession

①SqlSessionTemplate:这个须要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制(非接口开发)mybatis

②SqlSessionDaoSupport(存在与比较老的jar包中):这个只须要在实现类中继承特殊类(例如HibernateDaoSupport)app

  就可使用sqlsession(非接口方式开发)url

③MapperFactoryBean:这个要写配置文件,把对应的全部接口在配置文件中引用便可,无需写实现类,须要手动注入(动态代理开发)spa

④MapperScannerConfigurer:这个要写配置文件,只要给出接口所在的包便可,会自动把包中的接口引入,代理

  无需写实现类,使用注解扫描的方式@Autowired(动态代理)xml

在SpringMVC中,你能够没必要为每个DAO都去写相应的实现,而交给SpringMVC替你建立。

为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类可让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 同样调用它们就能够了,可是你不须要编写任何 DAO 实现的代码,由于 MyBatis-Spring 将会为你建立代理。

MapperFactoryBean

数据映射器接口能够按照以下作法加入到 Spring 中:

MapperFactoryBean与MapperScannerConfigurer

MapperFactoryBean 建立的代理类实现了 UserMapper 接口,而且注入到应用程序中。 由于代理建立在运行时环境中(Runtime,译者注) ,那么指定的映射器必须是一个接口,而 不是一个具体的实现类。

若是 UserMapper 有一个对应的 MyBatis 的 XML 映射器文件, 若是 XML 文件在类路径的位置和映射器类相同时(即 .java 与 .xml 文件在同一个包下), 它会被 MapperFactoryBean 自动解析。没有必要在 MyBatis 配置文件中去指 定映射器 , 除非映射器的 XML 文件在不一样的类路径下 。

注意,当 MapperFactoryBean 须要 SqlSessionFactory 或 SqlSessionTemplate 时。这些能够经过各自的 SqlSessionFactory 或 SqlSessionTemplate 属性来设置, 或者能够由 Spring 来自动装配。若是两个属性都设置了,那么 SqlSessionFactory 就会被忽略,由于 SqlSessionTemplate 是须要有一个 session 工厂的设置; 那个工厂会由 MapperFactoryBean 来使用。

你能够直接在 business/service 对象中以和注入任意 Spring bean 的相同方式直接注入映射器:

MapperFactoryBean与MapperScannerConfigurer

这个 bean 能够直接在应用程序逻辑中使用:

MapperFactoryBean与MapperScannerConfigurer

注意在这段代码中没有 SqlSession 或 MyBatis 的引用。也没有任何须要建立,打开或关闭 session 的代码, MyBatis-Spring 会来关心它的。

MapperScannerConfigurer

没有必要在 Spring 的 XML 配置文件中注册全部的映射器。相反,可使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。

要建立 MapperScannerConfigurer,能够在 Spring 的配置中添加以下代码:

MapperFactoryBean与MapperScannerConfigurer

basePackage 属性是让你为映射器接口文件设置基本的包路径。 你可使用分号或逗号 做为分隔符设置多于一

个的包路径。每一个映射器将会在指定的包路径中递归地被搜索到。

总结:
MapperFactoryBean 须要一个一个的配

MapperScannerConfigurer 能够配置多个

相关文章
相关标签/搜索