- 用类封装数据(grade举例)
- properties配置文件获取驱动,url,user,password读取sql注入问题
- 综合案例(提及事务有关操作)
-
- [x] 1.导包依赖包
-
- [x] 2.工具类
-
-
[x] 3.pojo
-
放封装
-
-
-
[x] 4.Dao(数据库相关操作)
-
AccountDao接口
- 增删改查 根据卡号,根据用户名查询
-
实现类,实现接口
- 连接,预编译...
- 删除里面加入事务管理 关闭自动提交事务,手动提交出异常 回滚,无异常 提交;
-
-
-
[ ] service包(写业务) 父类引用指向子类 多态
-
添加账户
- 用户名必须存在 查询数据库,有返回结果代表存在 存在不能再添加
- 必须设置密码 不为空,不能传空字符串
-
转账
- 参数 from从哪个人身上转出去 to转到谁身上 money转多少钱
- 首先 from和to必须存在,根据用户名查询就可以了
- 用户余额是否足够
- 一方扣钱,一方加钱
- 写更新方法 password money 根据用户名更新
-
-
-
[ ] test(测试)
-
测试添加
-
关于事务
按照单一职责来说需要写在DAO中
但是业务中会执行多次DAO,并且异常可能发生在service中,也就是说DAO无法知道发生异常了
如果DAO不知道发生异常,就不回滚事务
而且下面还有更多的DAO操作,他们需要在一个事务中
我们发现,如果把事务写在DAO中,再一个业务中多次调用DAO的时候会产生多个事务,会导致业务结果不一致
按照我们的需求,多个DAO操作需要在一个事务中,发现需要在DAO操作之前开启事务,在执行之后提交事务,那就意为着我们需要把事务代码写在service中
这样就打破了单一职责要求
如何解决?未完待续...
idea注释//TODO,高亮,快捷键alt+6快速定位
- 加入依赖包lib
- 写配置文件properties
- 编写工具类,工具类读取配置文件,获得连接,关闭资源
- 写接口,写接口实现类(pojo)
- 写服务,要实现的业务(service)
- 写测试类,开始测试