Mybatis-plus中BaseMapper和IService功能相似重复,为什么要提供两个接口?

由于最近项目中打算尝试使用mybatis-plus(此前一直在用mybatis),于是就去学习了一下,在浏览官方文档时产生了本文标题所示的疑问。
问题产生后,首先自然是寻求官方的解释,但是结果如下:
1、官方指南中“FAQ-常见问题”章节并没有对此作出解释;
2、官方指南中“核心功能-CRUD接口”章节有如下两段描述,从字面意思理解,IService接口只是对BaseMapper的进一步封装,查看两者的api源码后发现,貌似主要是封装了批量操作;

在这里插入图片描述

image.png

综合来看,比较合理的解释是:
1、从分层角度来解释,BaseMapper是DAO层的CRUD封装,而IService是业务业务逻辑层的CRUD封装,所以多了批量增、删、改的操作封装,这也比较符合官方指南中的阐述;
2、IService是对BaseMapper的扩展,从BaseMapper、IService、ServiceImpl三者的类关系以及源码可以看出;
此外,个人认为应该还有一个原因,就是IService和BaseMapper提供的是两种实现方式:
如果继承BaseMapper,则不需要去实现其内部方法,依靠mybatis的动态代理即可实现CRUD操作;
而如果自定义IBaseService去继承IService,则需要去实现IService中的方法;

image.png
image.png
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容