整合思路
- 將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 配置文件