7.MyBatis-Plus 通用Service和通用Mapper之间的关系
MyBatis-Plus 通用Service和通用Mapper之间的关系学了MyBatis-Plus之后发现通用Service和通用Mapper实现的功能好像都是一样的,但是其中的方法名又不同,因此想搞清楚他们之间的关系。项目结构如下,主要关注department相关的部分DepartmentMapper接口继承BaseMapper接口DepartmentServiceImpl继承ServiceI
·
7.MyBatis-Plus 通用Service和通用Mapper之间的关系
学了MyBatis-Plus之后发现通用Service和通用Mapper实现的功能好像都是一样的,但是其中的方法名又不同,因此想搞清楚他们之间的关系。
项目结构如下,主要关注department相关的部分
DepartmentMapper接口继承BaseMapper接口
DepartmentServiceImpl继承ServiceImpl对象并实现DepartmentService接口
首先摆出官网上对通用Service和通用Mapper的说明
Service CRUD 接口
- 通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用
get 查询单行
remove 删除
list 查询集合
page 分页
前缀命名方式区分Mapper
层避免混淆 - 泛型
T
为任意实体对象 - 建议如果存在自定义通用 Service 方法的可能,就创建自己的
IBaseService
继承Mybatis-Plus
提供的基类 - 对象
Wrapper
为条件构造器
Mapper CRUD 接口
- 通用 CRUD 封装BaseMapper接口,为
Mybatis-Plus
启动时自动解析实体表关系映射转换为Mybatis
内部对象注入容器 - 泛型
T
为任意实体对象 - 参数
Serializable
为任意类型主键Mybatis-Plus
不推荐使用复合主键约定每一张表都有自己的唯一id
主键 - 对象
Wrapper
为条件构造器
再根据项目看一下对应的继承关系图
从图中可以看到ServiceImpl实现了IService接口并依赖BaseMapper接口,Service必须要依赖BaseMapper这个接口来实现。
再看看他们实现的方法
可以看到IService除了提供基本的CRUD操作以外还提供了很多的批处理方法,而BaseMapper只提供了一些基础的CRUD操作。也就是说IService在BaseMapper的基础上封装了更多的方法,但最终还是要依赖于BaseMapper。
参考资料
- https://blog.csdn.net/baiwenjiebwj/article/details/115207084?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=1
- https://blog.csdn.net/qq_28967139/article/details/118764545
- https://xw.qq.com/cmsid/20220106A001V400
更多推荐
已为社区贡献4条内容
所有评论(0)