SpringBoot实践(五):mybatis-plus中的BaseMapper,Iservice和ServiceImpl

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这个接口定义的若干业务逻辑函数;

猜你喜欢

转载自blog.csdn.net/yezonggang/article/details/110954058
今日推荐