第三天:电商项目规格参数管理
一、规格参数管理介绍
1、优化规格参数数据库设计
2、需求
每个分类有不同的分类模版
根据模板每个商品具有具体信息
3、传统数据库设计
一般来说,一个商城的商品数量是以亿级为单位的,如果为每个商品都单独建立一个规格参数,那是相当难以维护的。但是通过传统数据库设计图可以发现,group和子项的对应关系是比较灵活的,可以采用模板参数的方法(一个商品类item目对应着一个固定的模板item_param,然后通过模板来给商品设置对应的规格参数item_param_item)。
把一个商品类目对应的规格参数模板设置到一个列中,这个列中存储特定格式的数据,把数据存储为json数据格式
补充:
1、使用jsaon储存数据的好处:
1、1 使用json方便传输,较少的冗余字符。当然二进制传输是最方便的,但随之而来的问题就是解析二进制较为麻烦。除了json还可以使用xml来传递,但是相比于xml传递,json有存在着一定的优势,在补充2里进行对比
1、2 方便转换,有很多的json api都提供了将json字符串转化为对象和把对象转化为json字符串的方法
1、3 易于程序员阅读,通过json字符串(键值方式)可以很好地了解存储的内容
2、json和xml的简单对比:
2、1 在可读性方面,JSON和XML的数据可读性基本相同。JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。
2、2 在可扩展性方面,XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
2、3 在编码难度方面,XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
2、4 在解码难度方面,XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
2、5 SON相对于XML来讲,数据的体积小。
2、6 JSON与JavaScript的交互更加方便。
二、规格参数查询实现
实现步骤:
1、先在ego-service添加对应的接口方法,然后在ego-service-impl实现具体实现。
注意:如果表中有一个或一个以上的列是text类型,逆向工程生成mapper和pojo类时,生成的方法会有XXXWithBlobs()方法,所以如果使用XXXWithBlobs()查询结果中包含text类时,就一定要使用XXXWithBlobs()方法,否则不能正确注入值
2、如果添加了新的服务类接口的话,记得要再去applicationContext-dubbo.xml文件里注册新的服务
3、去ego-manage中添加接口和对应接口的实现类,最后编写controller方法
注意点:由于dubbo把模块拆分部署在不同的服务器上,所以多个客户端在对同一个数据进行操作的时候可能出现事务的相关问题,此时就需要加上分布式事务了(暂时没有单独使用分布式事务的方法,暂时使用的时加入标志index来判断是否对所有的数据进行完整的操作,如果没有就抛出异常,然后在声明式事务中指定roll-back-for=“java.lang.Exception”); 使用mybatis逆向工程,只能进行单表查询,如果想要进行多表查询的话(因为使用了分布式,pojo和service一但确定了就不再去改动了),可以通过继承pojo加多个mapper查询注入继承子类来实现。
视频中还有些功能的实现为完善,如更改商品时,描述信息的回显未实现,商品规格化的修改也未实现,还有一个就是富文本上传文件的图片不能修改(这个暂无解决思路)!