Spring整合Mybatis

概述

在狂神的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&amp;useUnicode=true&amp;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>
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页