如今Mybatis_plus的使用越来越多,照着套了一下,总感觉不理解,用的不爽,花了一点时间就分析了下它的结构和原理,感觉这种类似的设计确实很不错。
首先是一个具体的类图结构:
SkuSaleAttrValueServiceImpl类是我需要实现的类,从类图可以看出来,它走了2条线,继承ServiceImpl类(路线二),实现SkuSaleAttrValueService接口(路线一),即同时具有了两条路线的方法!!!现在分别分析一下。
首先是ServiceImpl类,一开始看方法,我就好奇为什么BaseMapper已经有了一堆方法,为啥ServiceImpl也有,看了下,知道它是通过实现IService接口,来做了进一步实现,做了改动,所以BaseMapper仅仅是最原始的针对表的操作。而我们写的Dao,就是BaseMapper就是框架帮我们生成代理对象实体,在ServiceImpl被调用。
另一方面SkuSaleAttrValueService接口,乍一看,很奇怪,为啥又继承了IService,后来看了别人案例,原来是为了给使用者扩展用的,你可以在SkuSaleAttrValueService抽象方法,然后SkuSaleAttrValueServiceImpl进一步实现,之所以继承IService,我觉得可能是想保持整体的一致吧。
以上分析,可以看出来,两条路线的作用,前者是Mybatis_plus给我们设计好的一些基本方法,后者则是给使用者开放扩展,即同时具有了两条路线的方法!!!
随便写的,不要喷。