1. 程式人生 > 其它 >SpringBoot實踐(五):mybatis-plus中的BaseMapper,Iservice和ServiceImpl

SpringBoot實踐(五):mybatis-plus中的BaseMapper,Iservice和ServiceImpl

技術標籤: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這個介面定義的若干業務邏輯函式;