电商项目继承spring,mybatis源码来实现?这也太复杂了吧?

电商项目如果用springMVC+Ibatis会变得复杂吗

笔者理解的电商项目是支付前后一定要数据一致,然后再根据业务把模块分化简单,可是,当预见到目前的某科技的项目的时候,彻底对刷新了对电商项目复杂度新高。
从模块上来划分,分为后台管理模块,主要就是对抽奖规则的约定,以及前端用户使用模块,人员管理模块,就这三个模块组成的电商系统,而刚刚接手了抽奖模块的活动模块,模块大概如下:
1.根据后台定义的抽奖规则,比如,白名单以及黑名单的划分,还有机构的划分,机构下有二级,三级,四级机构,每个机构形成了级联关系,都关联到同一个表上的不同字段。
2.移动端基于鉴权,不同的用户,不同的级别显示不一样的抽奖的方案。
3.后台的脚本根据定义的规则实现对数据的过滤,得到成本最少下,获取推广度最高。

这里就引出了很多非常晦涩难懂的逻辑,下面是今天的总结:

1.oracle的高级用法

start with … connect by prior
一个级联关系的表下,使用这个可以实现递归的获取同一个根节点下的所有子节点
其他地方找到了一篇很清晰的文章,介绍了这里的级联是关系的树状递归的使用。一般在权限,或者级联的显示数据会用到。

select * from student s start with s.class = "物理班" connect by prior s.class = s.school;

2.select 1 from的使用

熟悉oracle的朋友肯定不会陌生这个使用,他的意思是从获取的结果集里面获取其中的一条记录,跟select * from的使用是一样的,但是查询的效率1>any>*。同样如果使用到复杂是脚本的会使用这种来优化。这里也贴出一篇文章参考。

3.rowNum与rowId

提到伪列的rowNow的使用,通常在分页,或者限定结果集的脚本上回使用上,也很久没有写分页的语句,毕竟现在能替代分页的复杂脚本的好用工具实在太多了,但是也贴上一篇文章,提供以后读者分析复习。

4.ibatis的dynamic,isNotEnpty,isEnpty标签的使用

这个笔者是通过在mapper文件见到了原生的ibatis的使用,摘录下来,select标签里面出入了参数为一个map,然后map传入了多个不同类型的key以及value,其中一个key作为条件对非空 的情况执行不同的sql逻辑块。同样这里也分享一篇文章作参考

注意下面开始高能
如果觉得上面的有点low,下面的部分会让你觉得重新定义电商系统

5.ApplicationContextAware的使用

作为目前最受欢迎的框架,没有之一的spring,如果有人问你如何获取到applicationContex来对bean进行反射处理,这时候你就必须对源码非常的熟悉才能知道一个class是如何被spring框架用一个map来维护这对应的bean的,通过beanFactory来对bean管理,包括初始化,构造,注入IOC容器,以及销毁。这个类可以直接获取spring配置文件中,所有有引用到的bean对象。这个读者可以自行根据能力阅读源码来加深理解,这里有一篇文章也有介绍。

6.sqlSessionTemplate的使用以及理解

在反射横行的框架下,如果只是知道反射的设计模式而没有加深理解并且通过这种代码风格对源码的阅读,那就浪费了反射的最佳实践了,这里的sqlSessionTemplate可以是mybatis的核心逻辑,可用于处理sql脚本,而这里的源码的接驳到DAO层使用,细粒度使用mybatis的原生提供的对JDBC 的简单支持,这里有一篇属于应用层面的文章可以提供参考,如果不满足要研究源码的,可以参考这篇文章,作者也是轻轻的带过这种设计的理念,具体还是要自己看看源码,尝试自己写一个源码模块,为开源社区做贡献。
如果有补充,请留言。

猜你喜欢

转载自blog.csdn.net/weixin_30947631/article/details/85314270