整合思路
- 将mybatis的SqlSessionFactory交给spring进行单例管理
- spring和mybatis整合,生成代理对象,使用SqlSessionFactory创建SqlSession(这里是由spring和mybatis整合自动完成)
- 持久层的mapper、dao都需要由spring进行管理
整合环境
创建一个新的java工程(基本接近实际开发的工程结构)
创建一个名为spring_mybatis的java project
jar包:
- mybatis的jar包
- spring的jar包
- mybatis和spring的整合包(早期ibatis和spring整合,是由spring官方提供;现在mybatis和spring整合由mybatis提供)
applicationContext.xml是spring的配置文件;SqlMapConfig.xml是mybatis的全局配置文件(名字不限定)
sqlSessionFactory配置
根据上面的整合思路,首先需要让spring来管理sqlSessionFactory,所以现在来做这一步的配置:
- 在applicationContext.xml中配置sqlSessionFactory
sqlSessionFactory在mybatis和spring的整合包下。
<!-- 加载数据库配置文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxActive" value="10"/>
<property name="maxIdle" value="5"/>
</bean>
<!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的SqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 加载mybatis的全局配置文件 -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
</bean>
注意:在定义sqlSessionFactory时,要指定 数据源 和 mybatis 配置文件