SpringBoot實踐(五):mybatis-plus中的BaseMapper,Iservice和ServiceImpl
阿新 • • 發佈:2020-12-12
技術標籤:Springboot後端開發javaspringspring boot
mybatis-plus中包含BaseMapper,Iservice兩個介面和ServiceImpl類,BaseMapper 針對dao層的方法封裝 CRUD,IService 針對業務邏輯層的封裝,需要指定Dao層類和對應的實體類,是在BaseMapper基礎上的加強,ServiceImpl 針對業務邏輯層的實現,搞懂三者關係就能搞懂怎麼用;
一般典型的使用例子中,XxImpl類繼承自ServiceImpl類,並例項化BaseMapper的子類XxMapper和持久化bean類,實現自定義的XxService介面(繼承IService介面),在XxImpl類實現CRUD的增刪改查功能,並重寫在XxService介面定義的方法;
@Slf4j @Service @DS("ads") public class TbAdsZtCgrxxDayImpl extends ServiceImpl<TbAdsZtCgrxxDayMapper,TbAdsZtCgrxxDay> implements TbAdsZtCgrxxDayService { @Autowired private GetResponse getResponse; @Override public List<TbAdsZtCgrxxDay> selectAllList() { return this.baseMapper.selectAllList(); } @Override public Future<Boolean> updateBaseInfo(TbAdsZtCgrxxDay cgr) { String ztmc=cgr.getZzmc(); log.info("當前正在處理的採購人是|{}",ztmc ); try{ String legalname =getResponse.getBaseInfo(ztmc).get(0).getData().get(0).getLegalName(); String socialcode= getResponse.getBaseInfo(ztmc).get(0).getData().get(0).getSocialCode(); cgr.setFrmc(legalname); cgr.setXydm(socialcode); }catch (Exception ex){ log.error("法人或者信用程式碼有空{}",ex.getMessage()); }finally { log.info("任務進行中,執行緒池剩餘任務數量為|{}", CustomMultiThreadingConfig.executor.getThreadPoolExecutor().getQueue().size()); int result = this.baseMapper.updateBaseInfo(cgr); return AsyncResult.forValue(result>0); } } }
關係如下:
ServiceImpl類持有BaseMapper這個介面的例項,並實現了Iservice這個介面, 所以XxImpl類(業務主要邏輯實現的地方)在繼承ServiceImpl類時候可以指定BaseMapper的子介面進行例項化(也就是例子中的TdAdsZtCgrxxDayMapper),而TbAdsZtCgrxxDayService是Iservice介面的子介面,XxImpl類實現了TdAdsZtCgrxxDaySerivice這個介面定義的若干業務邏輯函式;