整合思路:
- 需要Spring通过单例方法管理SqlSessionFactory
- Spring和MyBatis整合生成代理对象,使用SqlSessionFactory创建SqlSession(Spring和MyBatis整合自动完成)
- 持久层的mapper都需要spring进行管理
在applicationContext.xml配置sqlSession和数据源
配置dbcp数据源(Spring配置文件中)
<!-- 加载配置文件 -->
<context:property-placeholder location=""classpath:db.properties"/>
<!-- 配置dbcp -->
<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>
db.properties
这里以MySQL为例
jdbc.driver= com.mysql.jdbc.Driver
jdbc.url =jdbc:mysql://localhost:3306/order?characterEncoding=utf-8
jdbc.username = root
jdbc.password =root
配置sqlSessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis的配置文件 -->
<property name="configlocation" value="mybatis/SqlConfig.xml"/>
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"/>
</bean>
原始DAO开发:
dao接口实现类需要注入SqlSessionFactory,通过spring进行注入
这里spring声明配置方式,配置dao的bean
让UserDaoImpl实现类继承SqlSessionDaoSupport
mapper代理开发
第一种类型:mapper配置
<!-- MapperFactoryBean:根据mapper接口生成代理对象 -->
<bean id="" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- 指定mapper接口 -->
<property name="" value="mapper接口全路径"/>
<property name="" ref="sqlSessionFactory"/>
</bean>
第二种类型:mapper的批量扫描:
从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册
遵循规范:
mapper.java和mapper.xml映射文件名称保持一致,且在统一目录
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定扫描的包名 如果扫描多个包,包间用半角逗号分隔 -->
<property name="basePackage" value="mapper包名"/>
<property name="sqlSessionFactoryBeanName" value=""sqlSessionFactory"/>
</bean>