Spring中 使用注解+c3p0+事物 《模拟银行转账》
2024-08-22 23:25:49
使用注解的方式 模拟转账 要么都成功 要么都失败 !保持一致性!
准备工作:
jar包:
需要的类:
UserDao:
package com.hxzy.spring.c3p0.Dao; import lombok.Data;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource;
@Transactional //开启事务
@Data //生成set get
@Controller("userDao") //配置 加入ioc容器
public class UserDao {
@Resource(name = "jdbcTemplate")
private JdbcTemplate template; public void test_c3(){
String sql = "UPDATE user_all SET u_balance = u_balance-5 WHERE uid = 1";
// int a = 100/0;
String sql1 = "UPDATE user_all SET u_balance = u_balance+5 WHERE uid = 2";
template.update(sql);
template.update(sql1);
}
}
UserService:
package com.hxzy.spring.c3p0.Service; import com.hxzy.spring.c3p0.Dao.UserDao;
import lombok.Data;
import org.springframework.stereotype.Service; import javax.annotation.Resource; @Data
@Service("userService")
public class UserService {
@Resource(name = "userDao")
private UserDao userDao ;
public void test_(){
userDao.test_c3();
}
}
Test测试类:
package test; import com.hxzy.spring.c3p0.Service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
UserService service = (UserService) context.getBean("userService");
service.test_();
}
}
spring-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--============创建c3p0链接池=========-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/user_transfer"></property>
<property name="user" value="root"></property>
<property name="password" value="gubin"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--============创建事务==============-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--开启对事物的支持-->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
<!--============开启扫包==========-->
<context:component-scan base-package="com.hxzy.spring"></context:component-scan>
</beans>
数据库:
最新文章
- http://875880923.iteye.com/blog/1963400
- 《C与指针》第十三章练习
- Linux中查看jdk版本
- swift 取出中间文本
- 每天一个linux命令(7):mv命令
- WinForm - 两个窗体之间的方法调用
- Python 发展历史
- Markdown几个简单的例子
- 关于时间对象Date()
- java -cp用法
- javascript学习笔记 --event事件
- GNU/Linux需要特别注意的目录
- JavaScript的BOM、DOM操作、节点以及表格(二)
- 使用ASIFormDataRequest完成用户的登录操作
- [C#.Net]Window服务调用外部程序
- jquery on绑定事件
- github文档
- Java笔记(四)常用基础类
- Mybatis框架简单使用
- log4j.properties配置详解与实例(转载)
热门文章
- 删除.svn 文件
- Spring集成Mybatis配置文件的简单理解
- Python divmod() 函数
- Oracle_in_not-in_distinct_minsu的用法
- UITextFeild银行卡/身份证/电话号任意分割.
- 存储过程返回update结果集和insert主键
- Linux汇编与C互相调用
- Luogu 4602 [CTSC2018]混合果汁
- 训练超参数, 出现 Cannot use GPU in CPU-only Caffe 错误?
- Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using