package com.ds07.ebank.biz;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import com.ds07.ebank.entity.Account;
import com.ds07.ebank.persist.AccountDAO;
import com.ds07.ebank.persist.AccountDAOFactory;
import com.ds07.ebank.util.JdbcUtil;
/**
* 业务层实现。
* 1)调用持久层的相关方法去实现业务逻辑;
* 2)对事务进行控制,通过con对象的相关方法可以实现。
* a. 关闭自动提交:con.setAutoCommit(false);
* b.提交事务:con.commit();
* c.回滚事务:con.rollback();
* @author Administrator
*
*/
public class AccountServiceJdbcImpl implements AccountService {
//从持久层工厂类获得dao
private AccountDAO dao = AccountDAOFactory.getDAO();
public void createAccount(Account act) {
Connection con = null;
try {
//获得数据库连接,用于事务管理。
con = JdbcUtil.getConnection();
//关闭自动提交
con.setAutoCommit(false);
//开始事务
dao.insert(act);
//提交事务
con.commit();
System.out.println("恭喜,开户成功!");
} catch (Exception e) {
// TODO Auto-generated catch block
try {
//回滚事务
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
//释放连接
JdbcUtil.close(con);
}
}
public void deposite(String actNo, double amount) {
//
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//开始事务处理
//1)根据账户号查询账户
Account act = dao.selectByActNo(actNo);
//2)给账户存款
act.deposite(amount);
//3)更新账户
dao.update(act);
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
}
public double getBalance(String actNo) {
//
Account act = null;
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//开始事务处理
//1)根据账户号查询账户
act = dao.selectByActNo(actNo);
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
return act==null ? 0 : act.getBalance() ;
}
public void removeAccount(String actNo) {
//
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//
dao.delete(actNo);
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
}
public void withdraw(String actNo, double amount) {
//
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//开始事务处理
//1)根据账户号查询账户
Account act = dao.selectByActNo(actNo);
//2)给账户存款
act.withdraw(amount);
//3)更新账户
dao.update(act);
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
}
public List<Account> queryAll() {
List<Account> acts = null;
//
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//开始事务处理
acts = dao.selectAll();
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
return acts;
}
public Account queryByActNo(String actNo) {
Account act = null;
//
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//开始事务处理
act = dao.selectByActNo(actNo);
con.commit();
} catch (Exception e) {
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
return act;
}
public void transfer(String from, String to, double amount) {
Connection con = null;
try {
con = JdbcUtil.getConnection();
con.setAutoCommit(false);
//开始事务
Account act = dao.selectByActNo(from);
act.withdraw(amount);
dao.update(act);
act = dao.selectByActNo(to);
act.deposite(amount);
dao.update(act);
//提交事务
con.commit();
} catch (Exception e) {
// 回滚事务
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JdbcUtil.close(con);
}
}
}
olight
- 粉丝: 2
- 资源: 7
最新资源
- marked.min.js
- JSP期末备考试题答案(免费版)与主页试题配套
- 电力电子领域IGBT和MOSFET驱动参数计算方法及优化选择
- 电容触控传感器TC332的技术特性与应用说明
- NICAN通讯库 周立功通讯库 ZLG通讯库 PPL通讯库,只提供打包库,源码价格不一样 可以和周立功自带Demo看看效果,这个使用更方便简单 具体支持哪些看图ZLG的,NICAN所有的都支持
- Flask接口调用失败错误分析与解决方案(含Docker命令)
- 机械设计加油口自动上料焊接线sw21非常好的设计图纸100%好用.zip
- 机械设计离心筛分机step非常好的设计图纸100%好用.zip
- ZW、ZB型产品使用指南:基于pdfFactory Pro创建工具的技术解析与应用手册
- 八自由度车辆动力学Simulink仿真模型 模型包括.slx文件.m车辆参数文件和word说明文档 Matlab版本2018a,可生成低版本 八自由度包括纵向,横向,横摆,侧倾及四个车轮旋转运动,另外
- autosar的arxml转dbc
- 基于机器学习的可调VVC帧划分方案降低编码复杂度研究
- go1.23.4.windows-amd64-src
- 【机器学习实战】kaggle playground最新竞赛,预测贴纸数量-python源码+解析
- 3工位旋转工作台PLC控制系统设计, 西门子plc s7-200程序,和smart程序通用 全套包含:梯形图mwp文件,IO表,〈IO接线图,主电路图,控制电路图,控制系统流程图,液压原理图,dwg
- python语言jianli爬虫程序代码QZQ.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈