JDBC事务处理、提交、回滚。
来源:互联网 发布:湖南网络交易平台 编辑:程序博客网 时间:2024/06/05 03:15
package com.softeem.bank.dao;import java.util.List;public interface BaseDAO<T> {public boolean insert(T t);public boolean delete(T t);public boolean update(T t);public List<T> findAll();public T findById(T t);}package com.softeem.bank.dao;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;import com.softeem.bank.dto.Account;import com.softeem.utils.DAOHelper;import com.softeem.utils.DAOHelper.CallBack;public class AccountDAO implements BaseDAO<Account>{private Connection conn;public AccountDAO(Connection conn) {this.conn = conn;}@Overridepublic boolean insert(Account t) {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean delete(Account t) {// TODO Auto-generated method stubreturn false;}//更新金额@Overridepublic boolean update(Account t) {return DAOHelper.execUpdate(conn, "update tbaccount set cash=? where account=?", t.getCash(),t.getAccount());}@Overridepublic Account findById(final Account t) {return DAOHelper.execQueryOne("select * from tbaccount where id=?", new CallBack<Account>() {@Overridepublic Account getData(ResultSet rs) {try {if(rs.next()){t.setAccount(rs.getString("account"));t.setCash(rs.getDouble("cash"));}} catch (SQLException e) {e.printStackTrace();}return t;}}, t.getId());} @Overridepublic List<Account> findAll() {// TODO Auto-generated method stubreturn null;}}package com.softeem.bank.dto;public class Account {private int id;private String account;private double cash;public Account() {// TODO Auto-generated constructor stub}public Account(String account, double cash) {super();this.account = account;this.cash = cash;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public double getCash() {return cash;}public void setCash(double cash) {this.cash = cash;}@Overridepublic String toString() {return "Account [id=" + id + ", account=" + account + ", cash=" + cash + "]";}}package com.softeem.bank.service;import java.sql.Connection;import java.sql.SQLException;import com.softeem.bank.dao.AccountDAO;import com.softeem.bank.dto.Account;import com.softeem.utils.BaseConn;/** * 业务逻辑层 * @author mrchai * */public class AccountService extends BaseConn{//事务public synchronized void transfAccount(Account a,Account b,double money){Connection conn = getConn();//分别查询出A,B账号个各自余额AccountDAO dao = new AccountDAO(conn);a = dao.findById(a);b = dao.findById(b);if(a.getAccount() != null && b.getAccount() != null){//判断账号a余额是否足够if(a.getCash() >= money){//减少A账号的余额a.setCash(a.getCash() - money);//增加B账号的余额b.setCash(b.getCash() + money);try {//关闭事务自动提交conn.setAutoCommit(false);//开始转账boolean f1 = dao.update(a);//System.out.println(5/0);boolean f2 = dao.update(b);if(f1 && f2){conn.commit();System.out.println("转账成功!");}} catch (Exception e) {try {conn.rollback();//事务回滚System.out.println("转账失败");} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}}else{System.out.println("余额不足!");}}else{System.out.println("账号A或者B不存在");}}public static void main(String[] args) {Account a = new Account();Account b = new Account();a.setId(1);b.setId(3);new AccountService().transfAccount(a, b, 1000);}}
阅读全文
0 0
- JDBC事务处理、提交、回滚。
- JDBC 事务的回滚 提交
- JDBC--编程之事务处理--回滚的简单实例
- SQL回滚及事务处理
- jdbc事务-回滚
- PHP mysql事务处理 回滚操作
- php mysql事务处理回滚操作
- php mysql事务处理回滚操作
- 提交与回滚事物
- Store提交和回滚
- java 事务提交/回滚
- JDBC-数据库事务回滚
- jdbc事务处理
- jdbc事务处理
- jdbc事务处理
- JDBC ---- 事务处理
- JDBC事务处理
- jdbc事务处理
- Objective-C语法快速参考
- HDFS QJM的架构设计
- 系统管理员应该知道的 20 条 Linux 命令
- GAN的理解与TF的实现
- ubuntu彻底卸载mysql并且重新安装
- JDBC事务处理、提交、回滚。
- 最简单DrawerLayout侧滑菜单
- 2286: [Sdoi2011]消耗战
- vmware下虚拟机三种模式Nat,仅主机,桥接浅析
- 三分搜索--hdu3714 Error Curves
- 时间转换为ISO8061规范的UTC格式
- 心情小结 程序员的日常
- 优化的插入排序
- ffmpeg推流与播放