Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?
轉(zhuǎn)載自:https://blog.csdn.net/krismile__qh/article/details/99590872
熟悉 mybatis-plus 的人都知道,mybatis-plus 提供兩種包含預(yù)定義增刪改查操作的接口:
com.baomidou.mybatisplus.core.mapper.BaseMapper
com.baomidou.mybatisplus.extension.service.IService
Mybatis-plus提供了2個接口1個類:
BaseMapper 針對dao層的方法封裝 CRUD
IService<M,T> 針對業(yè)務(wù)邏輯層的封裝 需要指定Dao層類和對應(yīng)的實體類 是在BaseMapper基礎(chǔ)上的加強
ServiceImpl 針對業(yè)務(wù)邏輯層的實現(xiàn)
兩者提供的方法略有不同
對比這兩個接口,操作都差不多,名字有一點點改變,比如 BaseMapper 里面叫 insert() 的方法,在 IService 里面叫 save()。
其實我也不是很清楚為什么要單獨設(shè)計 IService 接口,但是兩者確實有區(qū)別,就是 IService 提供批處理操作,BaseMapper 沒有。
IService是對BaseMapper的擴展
另外,IService 的默認(rèn)實現(xiàn) com.baomidou.mybatisplus.extension.service.impl.ServiceImpl 就是調(diào)用 BaseMapper 來操作數(shù)據(jù)庫,所以我猜 IService 是 Java 8 之前對 BaseMapper 所做的擴展,而 Java 8 之后,因為有了 default 方法,ServiceImpl 里面的東西其實都可以移到 BaseMapper 里面了。
除此之外還有就是 IService 依賴于 Spring 容器,而 BaseMapper 不依賴;BaseMapper 可以繼承并添加新的數(shù)據(jù)庫操作,IService 要擴展的話還是得調(diào)用 Mapper,顯得有些多此一舉。
所以,如果你既要使用批處理操作,又要添加自己的數(shù)據(jù)庫操作,那就必須兩個接口一起用。
總結(jié)
以上是生活随笔為你收集整理的Mybatis Plus为什么提供BaseMapper和IService两个相似CRUD操作的接口?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021巨量引擎UGC互动营销白皮书
- 下一篇: 2021年暑期旅游数据报告