1.创建用户user实体类,该类中有cart购物车属性,并包含一些列有关购物车的方法,如getCart(),remove(),buy()等
2.购物车被创建之后就一直被放在user对象中保存在session中,购物车就是一个Map集合,键为商品id,值为商品数量,
此处注意Map集合的键类型为Object,如果商品id为int类型,需转成String类型,因为int不是Object类型,Integer才是。
3.如何获取到购物车中的所有商品????
使用Map集合的keySet()方法获取到Map集合中的所有键值,该方法返回的是所有键值组成的Set集合,然后遍历该set集合,
依次拿出各个商品的id值,并可通过Map集合的get("key")方法获取到各个商品id对应的商品数量,同时在遍历set集合的时候,
调用根据id查询商品信息的方法获取到商品的除id和数量外的其他信息,然后就可在购物车中显示,包括总价格信息
-------这里要注意:在商品的实体类中不包含购买数量属性,该属性是业务处理过程中生成的属性,习惯上使用vo对象进行处理,
目前我的实现比较简单,就是在商品类中添加了数量属性,但该属性在数据库并无对应字段,只是用来封装进实体类对象之中,
如此处理就有一个问题:根据商品id查询数据库获取的商品对象中并无数量属性,如果在调用查询方法之前将商品数量设置进
商品对象中,在调用了查询方法之后商品对象就会被更新,数量信息会拿不到,因此必须在调用了产讯方法之后在设置数量信息
到对象中。。。。
4.在创建数据库时注意:订单表和订单详情表 ------- 两个表的id字段名一致,并且均不是主键,也不设置自增
订单详情表用来保存用户订单的具体信息,如果某个用户购买了多件商品,那么在点击结帐按钮时循环遍历set集合,依次将信息添加进
商品详情表中,这样在该表中用户购买了几件商品就会产生几条记录,并且这些记录的详细订单oid值是一样的,都对应订单表的某个id值,
而订单表的id值不是重复的,此处在往订单详情表中添加信息时,首先获取到订单详情表的最大id值,然后+1,即为目前订单的id,在调用
完添加方法之后,再调用查询最大id的方法获取到最大id值(此时不再+1),该值又作为订单表的id进行添加,如此一来两个表之间的id值就 变得一致