博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis Spring整合配置映射接口类与映射xml文件
阅读量:5943 次
发布时间:2019-06-19

本文共 4309 字,大约阅读时间需要 14 分钟。

Spring整合MyBatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般会使用MapperScannerConfigurer,MapperScannerConfigurer会自动扫描basePackage指定的包,找到映射接口类和映射XML文件,并进行注入。配置如下:

 

[html]
  1. <!-- 数据源 -->  
  2. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
  3.     <property name="driverClass" value="${${database.type}.jdbc.driverClassName}"/>  
  4.     <property name="jdbcUrl" value="${${database.type}.jdbc.url}"/>  
  5.     <property name="properties" ref="dataSourceProperties"/>  
  6.     <property name="autoCommitOnClose" value="true"/>  
  7.     <property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/>  
  8.     <property name="initialPoolSize" value="${cpool.minPoolSize}"/>  
  9.     <property name="minPoolSize" value="${cpool.minPoolSize}"/>  
  10.     <property name="maxPoolSize" value="${cpool.maxPoolSize}"/>  
  11.     <property name="maxIdleTime" value="${cpool.maxIdleTime}"/>  
  12.     <property name="acquireIncrement" value="${cpool.acquireIncrement}"/>  
  13.     <property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/>  
  14. </bean>  
  15.   
  16. <!--基于注解的事务管理-->  
  17. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  18.     <property name="dataSource" ref="dataSource"/>  
  19. </bean>  
  20.   
  21. <tx:annotation-driven transaction-manager="transactionManager"/>  
  22.   
  23.   
  24. <bean id="lazySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  25.     <property name="dataSource" ref="dataSource"/>  
  26.     <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>  
  27. </bean>  
  28.   
  29. <!-- 扫描mybatis映射接口类 -->  
  30. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  31.     <property name="basePackage" value="com.test.dsm"/>  
  32.     <property name="sqlSessionFactoryBeanName" value="lazySqlSessionFactory"/>  
  33. </bean>  

这个配置的前提条件是:映射接口类文件(.java)和映射XML文件(.xml)需要放在相同的包下(com.test.dsm)

 

 

如果myBatis映射XML文件和映射接口文件不放在同一个包下怎么办呢?

如果在不同的包下,那就需要手动配置XML文件的路径了,只需要修改SqlSessionFactoryBean配置即可:

 

[html]
  1. <bean id="lazySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  2.     <property name="dataSource" ref="dataSource"/>  
  3.     <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>  
  4.     <!-- 当mybatis的xml文件和mapper接口不在相同包下时,需要用mapperLocations属性指定xml文件的路径。  
  5.          *是个通配符,代表所有的文件,**代表所有目录下 -->  
  6.     <property name="mapperLocations" value="classpath:com/test/mapper/mysql/**/*.xml" />  
  7. </bean>  

添加一个mapperLocations属性,指定加载xml文件的路径。

 

classpath:表示在classes目录中查找;

*:通配符表示所有文件;

**:表示所有目录下;

 

MyBatis官网说明如下:

 

Properties

 

SqlSessionFactory has a single required property, the JDBC DataSource . This can be any DataSource and should be configured just like any other Spring database connection.

One common property is configLocation which is used to specify the location of the MyBatis XML configuration file. One case where this is needed is if the base MyBatis configuration needs to be changed. Usually this will be <settings> or <typeAliases> sections.

Note that this config file does not need to be a complete MyBatis config. Specifically, any environments, data sources and MyBatis transaction managers will beignored . SqlSessionFactoryBean creates its own, custom MyBatis Environment with these values set as required.

Another reason to require a config file is if the MyBatis mapper XML files are not in the same classpath location as the mapper classes. With this configuration, there are two options. This first is to manually specify the classpath of the XML files using a <mappers> section in the MyBatis config file. A second option is to use themapperLocations property of the factory bean.

The mapperLocations property takes a list of resource locations. This property can be used to specify the location of MyBatis XML mapper files. The value can contain Ant-style patterns to load all files in a directory or to recursively search all paths from a base location. For example:

This will load all the MyBatis mapper XML files in the sample.config.mappers package and its sub-packages from the classpath.

 

 

原文地址:http://blog.csdn.net/zht666/article/details/38706083

你可能感兴趣的文章
Adaptive Backgrounds – jQuery 自适应背景插件
查看>>
手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)
查看>>
编码原则:“防御式编程”再次让我快乐
查看>>
国内2大Git代码托管网站
查看>>
VS2013,asp.net网站转换为web应用程序
查看>>
深入浅出SQL Server中的死锁
查看>>
用LinqPad查看Nhibernate生成的sql语句
查看>>
Android -- 在ScrollView中嵌套ListView
查看>>
企业搜索引擎开发之连接器connector(十九)
查看>>
树状数组(Binary Indexed Tree) 总结
查看>>
我怎么会做这样的梦呢?
查看>>
发短信接口获取验证码
查看>>
springMVC3学习(二)--ModelAndView对象
查看>>
【图论】广度优先搜索和深度优先搜索
查看>>
Android开发环境搭建(图文教程)
查看>>
Linux在线用户通信
查看>>
SSH框架总结(框架分析+环境搭建+实例源代码下载)
查看>>
Mapnik读取PostGIS数据渲染图片
查看>>
javascript中使用Map
查看>>
backbonejs中的模型篇(二)
查看>>