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

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

com.baomidou.mybatisplus.core.mapper.BaseMapper
com.baomidou.mybatisplus.extension.service.IService
Mybatis-plus提供了2个接口1个类:

BaseMapper 针对dao层的方法封装 CRUD
IService<M,T> 针对业务逻辑层的封装 需要指定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,显得有些多此一举。

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

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

  1. 多元统计分析matlab,MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法...

    MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法: 1.层次聚类hierarchical clustering 2.k-means聚类 这里用最简单的实例说明以下层次聚类原理和应用发 ...

  2. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  3. 用于MyBatis CRUD操作的Spring MVC 3控制器

    到目前为止,我们已经为域类" User "创建了CRUD数据库服务,并且还将MyBatis配置与Spring Configuration文件集成在一起. 接下来,我们将使用Spri ...

  4. Android中实现SQLite数据库CRUD操作的两种方式

    Android中实现SQLite数据库CRUD操作的两种方式 SQLite是一款轻量级的关系型数据库,具有运行速度.占用资源少的特点.通常只需要几百KB的内存就够了,因此特别适合在移动设备上使用.SQ ...

  5. mybatis mysql crud_Mybatis实现CRUD操作

    Mybatis实现CRUD操作 导入相关依赖 创建实体类User 创建Mybatis主配置文件:SqlMapConfig.xml 创建IUserDao接口. 创建于接口对应的映射配置文件:IUserD ...

  6. MyBatis学习存档(4)——进行CRUD操作

    使用MyBatis进行数据库的CRUD操作有2种方式:一种如之前所说的接口+xml,而另一种是通过对接口上的方法加注解(@Select @Insert @Delete @Update) 但是通常情况下 ...

  7. 2021年3月8日:MyBatis框架学习笔记02:利用MyBatis实现CRUD操作

    MyBatis框架学习笔记02:利用MyBatis实现CRUD操作 在第一节课中我们在UserMapper.xml里定义了两个查询语句:findById和findAll,对应的在UserMapper接 ...

  8. Mybatis框架实现CRUD操作

    Mybatis框架实现CRUD操作 自定义mybatis流程 mybatis基于代理dao的CRUD操作(重点) E:\JAVAworkspace\mybatis_CRUD CRUD中可能遇到的问题: ...

  9. MyBatis 3(2)实体映射 CRUD 操作(XML/注解方式)

    MyBatis 实体映射 Mybatis 配置数据映射主要有 2 种方式,通过 XML 配置文件进行,通过注解进行: Mybatis 对于实体映射是通过接口调用的方式,在底层上使用 Java 的动态代 ...

最新文章

  1. Vertica 分区表设计(续)
  2. 神仙打架激辩深度学习:LeCun出大招,马库斯放狠话,机器学习先驱隔空“互怼”...
  3. SDNU 1474.特殊回文数(水题)
  4. Codeforces Round #453 (Div. 1) D. Weighting a Tree 构造 + dfs树
  5. c++实现简单线程池代码
  6. mysql 半同步 5.6及5.7
  7. hdu2026.java字符
  8. c语言 冒泡排序算法,排序算法_冒泡排序改进(c语言实现)
  9. 对服务器端接口的调用,自己手写了一个脚本,但返回信息的中文总是乱码(这个方法很不错,重要的是解决思路,寻找手写脚本与录制脚本 生成目录文件的区别)...
  10. word添加自定义样式(导入normal.dotm)
  11. Ubuntu 16 NFS的安装与使用
  12. 题目1035:找出直系亲属 树
  13. 2022年河北二级建造师建设工程施工管理《施工合同管理》练习及答案
  14. 大数据工程师需要哪些基础知识?
  15. AccountManager 数据库存储位置
  16. Selenium滚动条处理
  17. 强大的字体编辑器推荐,设计属于自己的字体
  18. windows删除顽固文件
  19. win10或者win11老是出现Amd的驱动问题 网上说的都是win10或者win11会自动回滚驱动
  20. C语言宏定义的几个坑和特殊用法

热门文章

  1. nodejs 利用zip-local模块压缩文件夹
  2. 在CentOS上安装和配置Guacamole
  3. AtCoder Grand Contest 030 自闭记
  4. Java(21)_ ^、|、运算符
  5. 微信公众平台前端开发技巧分享
  6. hihoCoder 1367 等式填空
  7. javaweb学习总结(三十九)——数据库连接池
  8. Linux chmod命令修改文件与文件夹权限的命令附实例
  9. 分享:根据svg节点对象类型和路径值转换坐标值
  10. 【字符串系列】字符串匹配中的位并行算法