JdbcTemplate操作mysql手动提交事务遇到的问题

本文探讨了在Spring项目中使用JdbcTemplate进行手动事务控制时遇到的问题。在转账业务中,由于手动制造的异常未能导致事务回滚,导致数据不一致。分析发现,不同数据库操作使用的连接可能不同,无法确保事务的一致性。解决方案是采用Spring的声明式事务管理,将事务管理逻辑移出业务代码,提高了代码的维护性和事务处理的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:一个经典的转账问题

业务需求:数据表如下,现让tom向jerry转账100元,看一下能引发哪些问题

在这里插入图片描述

环境搭建:项目框架主要是spring,持久层框架暂时没用mybtis,用的是spring 的JdbcTemplate,连接池c3p0

项目结构:

在这里插入图片描述

applicationContext.xml文件主要配置:

    <!--加载外部的properties配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

    <!--配置元数据-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--注入依赖-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <bean id="accountDao" class="com.szly.dao.Impl.AccountDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>

    <bean id="accountService" class="com.szly.service.Impl.AccountServiceImpl">
        <property name="accountDao" ref=</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值