spring整合MyBatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般会使用MapperScannerConfigurer,MapperScannerConfigurer会自动扫描basePackage指定的包,找到映射接口类和映射XML文件,并进行注入。配置如下:
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"/> <!-- 采用configLocation方式 Mybatis配置文件保留 -->
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配置即可:

<bean id="lazySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 当mybatis的xml文件和mapper接口不在相同包下时,需要用mapperLocations属性指定xml文件的路径。
*是个通配符,代表所有的文件,**代表所有目录下 -->
<property name="mapperLocations" value="classpath:com/test/mapper/mysql/**/*.xml" /> <!-- 采用mapperLocation mybatis配置文件可以删除-->
</bean>
添加一个mapperLocations属性,指定加载xml文件的路径。
classpath:表示在classes目录中查找;
*:通配符表示所有文件
**:表示所有目录下;
MyBatis官网说明如下:http://mybatis.github.io/spring/factorybean.html
本文详细介绍了在Spring框架中整合MyBatis的过程,包括数据源、事务管理、SqlSessionFactory配置及Mapper接口扫描,特别关注了不同包下XML映射文件的加载策略。

2349

被折叠的 条评论
为什么被折叠?



