文章目录
mybatis
时,无需考虑事务如何创建,如何提交等,只需要配置好事务管理器<!-- 加载db.properties -->
<util:properties id="dbConfig"
location="classpath:db.properties" />
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="url"
value="#{dbConfig.url}" />
<property name="driverClassName"
value="#{dbConfig.driver}" />
<property name="username"
value="#{dbConfig.user}" />
<property name="password"
value="#{dbConfig.password}" />
<property name="initialSize"
value="#{dbConfig.initSize}" />
<property name="maxActive"
value="#{dbConfig.maxSize}" />
</bean>
<!-- 配置MapperScannerConfigurer,自动扫描整个包,并且spring会自动创建UserMapper接口对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 配置接口文件所在的包 -->
<property name="basePackage"
value="cn.tedu.spring.mapper" />
</bean>
<!-- 配置SqlSessionFactoryBean -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源:如何连接数据库等 -->
<property name="dataSource"
ref="dataSource" />
<!-- 配置XML文件的位置 -->
<property name="mapperLocations"
value="classpath:mappers/UserMapper.xml" />
</bean>
<!--配置事务管理器,需要用到前面配置的数据源datasource-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
spring
配置文件中配置即可<!-- 开启事务注解 ,transaction-manager指定的是上面配置的事务管理器的id-->
<tx:annotation-driven transaction-manager="transactionManager"/>
@Transactional
注解(或者是Service类上)service
的@Transactional
public void ChangePasssword(Integer id, String oldPassword,
String newPassword) throws UserNotFoundException, PasswordNotMatchException{
User user=this.findUserById(id); //获取用户信息
if (user==null) { //如果用户信息不存在
throw new UserNotFoundException("操作失败,用户信息不存在");
}else { //用户存在,则判断原密码
if (user.getPassword().equals(oldPassword)) {//如果密码匹配
User user1=new User();
user1.setPassword(newPassword);
userMapper.update(user1);
}else { //原密码不匹配
throw new PasswordNotMatchException("操作失败,原密码不正确");
}
}
}
service
类上添加@Transactional
注解,那么类中的整个方法都会被管理@Service
@Transactional //配置事务管理
public class UserServiceImpl implements IUserService {
@Resource
private UserMapper userMapper;
}
spring-service.xml
中开启组件扫描service
即可<!-- 组件扫描 -->
<context:component-scan base-package="cn.tedu.spring.service" />
RuntimeException
就会自动回滚<!-- 加载db.properties -->
<util:properties id="dbConfig"
location="classpath:db.properties" />
<!-- 数据源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="url"
value="#{dbConfig.url}" />
<property name="driverClassName"
value="#{dbConfig.driver}" />
<property name="username"
value="#{dbConfig.user}" />
<property name="password"
value="#{dbConfig.password}" />
<property name="initialSize"
value="#{dbConfig.initSize}" />
<property name="maxActive"
value="#{dbConfig.maxSize}" />
</bean>
<!-- 配置MapperScannerConfigurer,自动扫描整个包,并且spring会自动创建UserMapper接口对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 配置接口文件所在的包 -->
<property name="basePackage"
value="cn.tedu.spring.mapper" />
</bean>
<!-- 配置SqlSessionFactoryBean -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置数据源:如何连接数据库等 -->
<property name="dataSource"
ref="dataSource" />
<!-- 配置XML文件的位置,其中的值是一个数组 -->
<property name="mapperLocations">
<array>
<value>classpath:mappers/UserMapper.xml</value>
<value>classpath:mappers/DormitoryMapper.xml</value>
</array>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 配置数据源 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启事务注解 ,transaction-manager指定的是上面配置的事务管理器的id-->
<tx:annotation-driven transaction-manager="transactionManager"/>
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有