概述
在狂神的spirng-study项目中,新建一个module: spring-10-mybatis
在这里面的resources资源下,创建spring-dao.xml文件,用来装配mybatis的两个重要的bean(dataSource 和 sqlSessionFactory)
spring本来就是用来装配bean嘛
装配dataSource
利用spring提供的jar包 DriverManagerDataSource
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncodeing=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
装配sqlSessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configuration" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/kuang/mapper/*.xml"/>
</bean>
sqlSessionFactory 本来也是需要三个参数
装配sqlSession
这里Spring 的 jar包中提供了一个类,可以用来装在sqlSession这个bean
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
装配Dao或者Mapper(读写数据库)
这里呢,Mybatis之后Mapper接口,所以需要自己手动创建一个实现类,实现原本的Mapper接口;然后就可以装配了
<bean id="userMapper" class="com.kuang.mapper.UserMapperImpl">
<property name="sqlSession" ref="sqlSession"/>
</bean>
声明式事务
三步实现事务控制
1 装载事务管理类对象 叫 transactionManager
2 利用AOP 设置横切通知 advice
3 配置横切生效
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource">
</bean>
设置横切的通知 advice
这里引入一行 代码 tx标签
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add" propagation="REQUIRED"/>
<tx:method name="delete" propagation="REQUIRED"/>
<tx:method name="update" propagetion="REQUIRED"/>
<tx:method name="select" read-only="true"/>
</tx:attributes>
</tx:advice>
配置横切生效
<aop:config>
<aop:pointcut id="txPointcut" expression="excution(* com.kuang.mapper.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>