当前位置: 首页 > 编程笔记 >

详解Java的MyBatis框架与Spring框架整合中的映射器注入

邢思淼
2023-03-14
本文向大家介绍详解Java的MyBatis框架与Spring框架整合中的映射器注入,包括了详解Java的MyBatis框架与Spring框架整合中的映射器注入的使用技巧和注意事项,需要的朋友参考一下

MyBatis-Spring允许你在Service Bean中注入映射器。当使用映射器时,就像调用DAO那样来调用映射器就可以了,但是此时你就不需要进行任何DAO实现的编码,因为MyBatis会为你进行。
使用注入的映射器,你的代码就不会出现任何MyBatis-Spring依赖和MyBatis依赖。在我们的应用中有这样一个简单的映射器。你也应该知道映射器仅仅是一个接口:

public interface UserMapper {  
  User getUser(String userId);  
}  

这是你使用MyBatis-Spring来创建映射器的方式:

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
  <property name="mapperInterface" value="sample.UserMapper" />  
</bean>  

现在你的映射器已经准备在Service对象中注入了:

<bean id="fooService" class="sample.FooServiceImpl"> 
  <property name="userMapper" ref="userMapper"/> 
</bean> 

注:映射器接口全类名与映射器xml配置文件的namespace是对应的。
 
关于MapperFactoryBean
MapperFactoryBean创建的代理类实现了映射器接口(如上例:UserMapper),并且注入到应用程序中。因为代理创建在运行环境中,那么指定的映射器必须是一个接口。而不是一个具体的实现类。 

没有必要在Spring的XML配置文件中注册所有的映射器。相反,你可以使用一个MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBeans。要创建MapperScannerConfigurer,可以在Spring的配置中添加如下代码:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
  <propery name="basePackage" value="org.mybatis.spring.sample.mapper"/> 
</bean> 

 
basePackage属性是让你为映射器接口文件设置基本的包路径。你可以使用分号或逗号作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。
注意,没有必要去指定SqlSessionFactory或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。但是,如果你使用了一个以上的DataSource(因此,也是多个的SqlSessionFactory),那么自动装配可能会失效。这种情况下,你可以使用sqlSessionFactory或sqlSessionTemplate属性来设置正确的工厂/模板。
 
MapperScannerConfigurer支持过滤由指定的创建接口或注解创建映射器。annotationClass属性指定了要寻找的注解名称。markerInterface属性指定了要寻找的父接口。如果两者都被指定了,加入到接口中的映射器会匹配两种标准。默认情况下,这两个属性都是null,所以在基包中给定的所有接口可以作为映射器加载。
 
被发现的映射器将会使用Spring对自动侦测组件默认的命名策略来命名。也就是说,如果没有发现注解,它就会使用映射器的非大写的非完全限定类名。但是如果发现了@Component或JSR-330@Named注解,它会获取名称。

 类似资料:
  • 本文向大家介绍详解Java的Spring框架中bean的注入集合,包括了详解Java的Spring框架中bean的注入集合的使用技巧和注意事项,需要的朋友参考一下 使用value属性和使用<property>标签的ref属性在你的bean配置文件中的对象引用,这两种情况下可以处理单值到一个bean,如果你想通过多元值,如Java Collection类型List, Set, Map 及 Prope

  • 本文向大家介绍详解SSH框架和Redis的整合,包括了详解SSH框架和Redis的整合的使用技巧和注意事项,需要的朋友参考一下 一个已有的Struts+Spring+Hibernate项目,以前使用MySQL数据库,现在想把Redis也整合进去。 1. 相关Jar文件 下载并导入以下3个Jar文件: commons-pool2-2.4.2.jar、jedis-2.3.1.jar、spring-da

  • 本文向大家介绍ssm整合之Spring整合MyBatis框架配置事务的详细教程,包括了ssm整合之Spring整合MyBatis框架配置事务的详细教程的使用技巧和注意事项,需要的朋友参考一下 ssm整合之Spring整合MyBatis框架配置事务 1.在applicationContext.xml修改代码如下: 2.修改index.jsp的代码如下: 3.修改帐户的控制类的代码如下: 4.重新部署

  • 本文向大家介绍CI框架整合smarty步骤详解,包括了CI框架整合smarty步骤详解的使用技巧和注意事项,需要的朋友参考一下 本文详细讲述了CI框架整合smarty步骤。分享给大家供大家参考,具体如下: Ci结合smarty的配置步骤: 1. 第一步配置ci和下载smarty的模板个人喜欢用(Smarty-3.1.8)这个版本。 2. 第二部把下载到的smarty版本解压然后把里面的libs文件

  • 本文向大家介绍Java的MyBatis框架中XML映射缓存的使用教程,包括了Java的MyBatis框架中XML映射缓存的使用教程的使用技巧和注意事项,需要的朋友参考一下 MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行: 字面上看就是这样。这个简单语句的效果如下: 1.映射语句文件中的所有s

  • 本文向大家介绍Java的MyBatis框架中Mapper映射配置的使用及原理解析,包括了Java的MyBatis框架中Mapper映射配置的使用及原理解析的使用技巧和注意事项,需要的朋友参考一下 Mapper的内置方法 model层就是实体类,对应数据库的表。controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action。Ser