[马云]如何利用Java代码模拟银行转账这一功能?


[马云]如何利用Java代码模拟银行转账这一功能?
文章图片
[马云]如何利用Java代码模拟银行转账这一功能?
文章图片
[马云]如何利用Java代码模拟银行转账这一功能?
文章图片
[马云]如何利用Java代码模拟银行转账这一功能?
文章图片
今天是刘小爱自学Java的第70天 。
感谢你的观看 , 谢谢你 。
话不多说 , 开始今天的学习:
转账 , 相信大家基本都接触过 , 无论是线下用银行卡转账还是线上用手机转账 , 本质上都是差不多的 。
一、转账案例需要两个账户:刘小爱账户和刘妈妈账户;刘小爱账户转出;刘妈妈账户转入 。
刘小爱要给刘妈妈转账 , 毕竟要攒着将来娶媳妇 , emm……就转1000吧(看来是娶不到媳妇了……)
在数据库中用sql语句编写一个账户信息表 , 同时也是对sql语法的一次回顾:
当然 , 账户信息表肯定是在银行的数据库中的 , 并且是最重要的一个存在 , 会严加防范 。
我这边只是模拟这个案例 , 所以在自己的数据库上创建了一个账户信息表 。
表很简单:主要两个属性 , 账户名和账户余额 。
现在编写代码:

  • 刘小爱账户给刘妈妈账户转1000
  • 刘小爱账户余额减少1000
  • 刘妈妈账户余额增加1000

根据代码可拓展性原则 , 并未将账户名 , 转账金额写死 。
①提示用户输入信息
这个本来是应该在网页上面显示信息提醒用户的 , 但是这块还不会 , 就用Java中的控制台来模拟 。
也就是Scanner这个类的使用 。
②从德鲁伊连接池中获取连接
这个我们昨天将德鲁伊连接池封装进工具类JdbcUtil了 , 所以可以直接用工具类获取连接 。
③转出账户预编译
转出账户名为inName , 转出的金额为money 。
那么要将数据库中对应账户名的money减少对应的金额 。
④转入账户预编译
转入账户名为outName , 转入金额为money 。
那么要将数据库中对应账户名的money增加对应的金额 。
代码编写完成 , 现在再做测试:
指定转出账户为:刘小爱
指定转入账户为:刘妈妈
设定转账金额为:1000
二、事务的引入要知道我们转账本质上是转出方先将钱转到银行 , 银行再将钱转入到转入方 。
这样就会存在一个问题:
比如刘小爱的钱从他的账户中转出去了 , 但是银行还没有将钱转到刘妈妈的账户中 , 突然银行发生了突发事故 。
至于什么事故 , 反正就是没法转钱到刘妈妈账户上了 。
用代码模拟这种情况:
上面有异常是直接throws了 , 现在要自行处理 。
使用IDEA开发工具快捷键Ctrl+Alt+T:可以选择一块代码try……catch
①转出账户
这段代码就相当于刘小爱账户里的钱转到银行了 。
②自己写一个异常
我们都知道分母是不能为0的 , 也就是说程序执行到这里会报错 。 这个是用来模拟银行出事了 。
③转入账户
本来银行是应该将钱转入到刘妈妈账户的 , 但是因为发生了异常 , 导致这段代码没法执行 。
我们看看最终的结果:
刘小爱账户里的钱减少了 , 但是刘妈妈账户里的钱没有增加 。 那这怎么行?这不是在坑我么?