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值就 变得一致
相关文章
- SpringCloud微服务项目跨模块接口调用中,将接口返回数据转换封装成实体类的实现
- JAVA对数据库进行操作,实现数据库中数据的插入,查询,更改,删除操作
- STL中实现 iterator trail 的编程技巧
- idea 转换大小写在IntelliJ IDEA中,转换文本的大小写可以通过以下方法实现:使用快捷键Ctrl+Shift+U
- mysql+php实现选课系统中遇到的问题及解决方法
- Java中类继承、接口实现的一些要注意的细节问题
- Java中实现从一加到一百的求和程序
- C#中抽象类(abstract)和接口(interface)的实现
- 关于jsp中的URL用的好处
- R语言学习笔记(二十二):字符串处理中的函数对比(代码实现)