Mybatis-plus中Service和Mapper

Mybatis-plus中Service和Mapper,第1张

熟悉 mybatis-plus 的人都知道,mybatis-plus 提供两种包含预定义增删改查操作的接口:

com.baomidou.mybatisplus.core.mapper.BaseMappercom.baomidou.mybatisplus.extension.service.IService

Mybatis-plus提供了2个接口1个类:

BaseMapper 接口针对dao层的方法封装 CRUDIService 接口针对业务逻辑层的封装 需要指定Dao层类和对应的实体类 是在BaseMapper基础上的加强ServiceImpl, T> 类针对业务逻辑层的实现

两者提供的方法略有不同:
对比这两个接口,操作都差不多,名字有一点点改变,比如 BaseMapper 里面叫 insert() 的方法,在 IService 里面叫 save()

再有就是 IService 提供批处理操作,BaseMapper 没有。

除此之外还有就是 IService 依赖于 Spring 容器,而 BaseMapper 不依赖。

所以,如果你既要使用批处理操作,又要添加自己的数据库操作,那就必须两个接口一起用。

下面让我们看一下继承结构:

🔔重要: 既然ServiceImpl类也实现了IService接口,那么如果我的UserServiceImpl直接继承ServiceImpl类不就行了吗?为何还要自定义一个继承了IService接口的IUserService接口?这是因为Spring自动注入要求是以接口为标准,在Controller里注入的Service要是一个接口才符合Spring的规范(当然你注入类也行)!

再来看看ServiceImpl类的源代码:

/**
 * IService 实现类( 泛型:M 是 mapper 对象,T 是实体 )
 *
 * @author hubin
 * @since 2018-06-23
 */
@SuppressWarnings("unchecked")
public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {

    protected Log log = LogFactory.getLog(getClass());

    @Autowired
    protected M baseMapper;

    @Override
    public M getBaseMapper() {
        return baseMapper;
    }

    protected Class<T> entityClass = currentModelClass();

    @Override
    public Class<T> getEntityClass() {
        return entityClass;
    }

    protected Class<M> mapperClass = currentMapperClass();
    
  ......
}

里面依赖Spring容器给自动注入了baseMapper

下面我们对比一下BaseMapperIService 两个接口的方法。

总结:

BaseMapper 针对dao层的方法封装 CRUD

IService 针对业务逻辑层的封装,需要指定Dao层类和对应的实体类,是在BaseMapper基础上的加强

ServiceImpl 针对业务逻辑层的实现

一般典型的使用例子中,自己的${Entity}ServiceImpl类继承自ServiceImpl类,并实例化BaseMapper的子类${Entity}Mapper和持久化${Entity}类,实现自定义的$I{Entity}Service接口(继承IService接口),在${Entity}ServiceImpl类实现CRUD的增删改查功能,并重写在I${Entity}Service接口定义的方法

例如:

public interface IMyEntityService extends IService<MyEntity> {
  public List<MyEntity> selectAllList();
  public Future<Boolean> updateBaseInfo(MyEntity cgr);
}  

@Service
public class MyEntityImpl extends ServiceImpl<MyEntityMapper,MyEntity> implements MyEntityService {
 
    @Autowired
    private GetResponse getResponse;
 
    @Override
    public List<MyEntity> selectAllList() {
        return this.baseMapper.selectAllList();
    }
 
    @Override
    public Future<Boolean> updateBaseInfo(MyEntity 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);
        }
 
    }
}

自定义的IMyEntityService接口里面可以自定义一些针对自己业务封装的一些方法


<<<<<<<<<<<< ⌛ >>>>>>>>>>>>

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/web/2990424.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-09-23
下一篇2022-09-23

随机推荐

  • 提质增效什么意思?

    提质增效是指提高质量、增加效率。提质增效常用于经济、产业、工程等的设定目标。提质增效的具体含义:打好提质增效攻坚战,就是要确保企业的生产经营始终保持平稳运行,使国有企业真正成为有活力、有较强竞争力和抗风险能力的市场主体,为稳财政、稳就业作出

    2023-02-03
    100
  • 北凉是现在的哪个省

    北凉是现在的甘肃西部、宁夏、新疆、青海的一部分。北凉是十六国之一,至于它的成立有两种说法,一是由匈奴支系卢水胡族的首领沮渠蒙逊所建立,二是由段业建立,此说是以蒙逊堂兄沮渠男成拥立段业称凉州牧,并改元神玺为立国之始(397年)。401年蒙逊诬

    2023-02-03
    100
  • 放烤箱的纸是什么纸哪种纸可以放烤箱

    1、垫在烤箱上的纸名为锡箔纸。锡箔纸可以防止食物和烤箱粘连,还可以让食物均匀受热,同时可以方便清洁烤盘。如果是烤蛋糕,一般使用的是油纸,这种纸可以防止蛋糕粘连。2、烤箱是我们日常生活中经常会使用的一种电器,在第一次使用电烤箱的时候要注意清洁

    2023-02-03
    100
  • 广东梅州出了多少影视明星?

    出生在广东梅州的比较有名气的有饶威,1990年3月出生于广东梅州,毕业于星海学院,大陆男歌手。林好,1981年5月出生于广东梅州,毕业于中央戏剧学院2000级表演系,中国内地演员。谭佑铭,1988年12月出生于广东梅州,歌手、演员、主持人

    2023-02-03
    100
  • 日语中tsu这个到底怎么读的?

    日语tsu的发音,是介于中文的“粗”和“呲”之间,而且要注意,读的时候tsu 是不可以咧嘴的。tsu是从牙缝里出来的音,而“粗”是从收缩的嘴唇里发出来的音。所以,要将“粗”和“呲”结合起来发音,对于中国的日语初学者来说需要细细体会。拓展

    2023-02-03
    100
  • 家有四喜指的是什么

    家有四喜指的是:燕子、狗、喜鹊、蜘蛛。这个就是人们图的一个好彩头。第一、“燕子不入苦门之家”生活在农村,每当春天到来的时候,在家里的大门下总会有燕子来搭窝,前不久,家里不时有燕子在啼叫,不过两日,竟然把窝给搭好了!这一根根的树枝,也反映出

    2023-02-03
    100
  • 什么是箱体理论?

    所谓箱体理论,是指股票在运行过程中,形成了一定的价格区域。即股价是在一定的范围内波动,这样就形成一个股价运行的箱体。当股价滑落到箱体的底部时会受到买盘的支撑,当股价上升到箱体的顶部时会受到卖盘的压力。一旦股价有效突破原箱体的顶部或底部,股价

    2023-02-03
    100
  • 一公斤等于多少升?

    公斤和升无法换算,公斤是重量的单位,升是体积的单位.密度*体积才是质量;对于水来说,一公斤水等于一升,1公斤=1千克=1000克;1升=1000毫升=1000立方厘米。公斤和千克是一个概念,一公斤就等于一千克。公斤或者千克是一个常见的质量

    2023-02-03
    100
  • PBT是什么材质

    pbt是指聚对苯二甲酸丁二醇酯为主体所构成的一类塑料。pbt的特点主要有三个方面。首先,pbt是最坚韧的工程热塑材料之一。它是半结晶材料,有非常好的化学稳定性、机械强度、电绝缘特性和热稳定性。其次,pbt具有优良的长期耐化学药品性。在常温下

发表评论

登录后才能评论

评论列表(0条)

    保存