一、@Transactional
在项目中,提交订单涉及到1.生成订单。2.生成订单item,所以需要涉及到事务管理
@Transactional相关参考:
https://www.jianshu.com/p/befc2d73e487
https://www.cnblogs.com/xd502djj/p/10940627.html
https://www.cnblogs.com/zuoxh/p/9724193.html
事务:
https://www.jianshu.com/p/bcfd48c4cbf4
事物是一个整体,结果就两种(成功或者失败)
要么全部成功(提交),要么全部失败(回滚),就算成功一部分也要(回滚)
事物的四个特性:
原子性:对数据进行操作的时候,要么全都执行,要么全都不执行。
一致性:和原子性是分不开的,事务执行成功,说明全部都执行了,那么就使数据库从一个一致性状态变到另一个一致性状了。
隔离性: 一个事务的执行不能被其他事务干扰
持续性: 事务一旦提交成功,那么数据库里的数据就会永久性的改变。
二、其他小问题
2.1 对于相同名称的多参数:
可以用String[]获取:
2.2该项目的购物车和购买订单复用orderitem设计模式会导致一个bug:当购物车中有某件产品,再进入产品详情页直接购买时,会顺带购买上购物车的相同产品,因为在购买时一个用户的相同产品属于同一个orderitem,注释掉buyone函数下部分代码即可修改本bug: