Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?

您所在的位置:网站首页 为什么controller注入的是service而不是serviceimpl实现 Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?

Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?

2023-09-17 02:33| 来源: 网络整理| 查看: 265

转载自:https://blog.csdn.net/krismile__qh/article/details/99590872

熟悉 mybatis-plus 的人都知道,mybatis-plus 提供两种包含预定义增删改查操作的接口:

com.baomidou.mybatisplus.core.mapper.BaseMappercom.baomidou.mybatisplus.extension.service.IService

Mybatis-plus提供了2个接口1个类:

BaseMapper 针对dao层的方法封装 CRUDIService 针对业务逻辑层的封装 需要指定Dao层类和对应的实体类 是在BaseMapper基础上的加强ServiceImpl 针对业务逻辑层的实现 两者提供的方法略有不同 对比这两个接口,操作都差不多,名字有一点点改变,比如 BaseMapper 里面叫 insert() 的方法,在 IService 里面叫 save()。

其实我也不是很清楚为什么要单独设计 IService 接口,但是两者确实有区别,就是 IService 提供批处理操作,BaseMapper 没有。

IService是对BaseMapper的扩展 另外,IService 的默认实现 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl 就是调用 BaseMapper 来操作数据库,所以我猜 IService 是 Java 8 之前对 BaseMapper 所做的扩展,而 Java 8 之后,因为有了 default 方法,ServiceImpl 里面的东西其实都可以移到 BaseMapper 里面了。

除此之外还有就是 IService 依赖于 Spring 容器,而 BaseMapper 不依赖;BaseMapper 可以继承并添加新的数据库操作,IService 要扩展的话还是得调用 Mapper,显得有些多此一举。

所以,如果你既要使用批处理操作,又要添加自己的数据库操作,那就必须两个接口一起用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3