- 所谓的sm整合,就是将mybatis的数据源,工厂,事务交给spring管理(IOC)
* 管理数据源
* spring管理连接池 (apache-commons-dbcp , c3p0 , druid)
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test_ssm?characterEncoding=utf8"></property>
<property name="username" value="root" />
<property name="password" value="root" />
<property name="maxTotal" value="100" />
<property name="minIdle" value="5" />
<property name="maxWaitMillis" value="2000" />
</bean>
6.2. 管理工厂
* 需要额外引入一个jar文件 mybatis-spring.jar
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml" ></property>
<property name="dataSource" ref="dataSource" />
</bean>
6.3. 配置声明式事务
<!-- 事务管理者 -->
<bean id="manager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事务管理策略 -->
<tx:advice id="txAdvice" transaction-manager="manager">
<tx:attributes>
<tx:method name="save*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
<tx:method name="add*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
<tx:method name="delete*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
<tx:method name="remove*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
<tx:method name="update*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
* isolation 事务隔离级别
* propagation 事务传播行为
<!-- 事务管理时间点(切入点) -->
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution (* com.duyi.service.*.*(..))" />
</aop:config>
* 在spring管理的机制下,调用service包中任意类的任意方法时,按照策略实现事务管理