美文网首页
Mybatis-plus中BaseMapper和IService

Mybatis-plus中BaseMapper和IService

作者: 笨比乔治 | 来源:发表于2021-03-10 21:54 被阅读0次

    由于最近项目中打算尝试使用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

    相关文章

      网友评论

          本文标题:Mybatis-plus中BaseMapper和IService

          本文链接:https://www.haomeiwen.com/subject/wsooqltx.html