java吧 关注:1,231,119贴子:12,693,627
  • 9回复贴,共1

菜鸟被绕晕了,springboot+mybatis 有了Mapper为什么还要接口

只看楼主收藏回复

如下图:
例子的流程是这样
ConsumerServiceImpl 是 ConsumerService 接口的实现类,
感觉ConsumerServiceImpl 类不用implements ConsumerService ,
直接
@Autowired
private ConsumerMapper consumerMapper
为什么不行呢,为什么硬要implements ConsumerService 进来才能用呢 这是一个问题
另外第二个问题是:
ConsumerService 跟 ConsumerMapper 是怎么联系起来的, 这里搞不明白,代码也看不出有什么关联
哪位高人指点下,万分感谢!


IP属地:广西1楼2022-01-14 15:53回复
    其实就是个关联关系 接口只是接口 你没有给这个接口定义方法功能这就只是个接口 所以逻辑来了 拿用户登录来说 用户点击登录按钮的一瞬间 是不是要调你的业务接口,但是要想实现登录功能,就得有逻辑,比如用户账号对不对,密码是不是正确,要是不正确怎么办,忘了密码怎么办,那就得调逻辑层来实现这些,那你都调逻辑层了 , 那我怎么去匹配你用户的账号密码对不对呢,得去数据库里匹配吧,那就得调mapper层的东西去数据库里查询了, 一层扣一层,层层扣下来的


    2楼2022-01-14 16:58
    回复
      因为你controller会用到service层的东西,autowire自动注入service而不是impl,利用了多态的概念


      IP属地:广东来自Android客户端6楼2022-01-14 18:06
      回复
        第一个.是可以,但是为了解耦分层
        第二个.Service和ServiceImpl 这个是面向接口编程的思想,方便后面扩展
        第三个.Service和mapper怎么关联?ServiceImpl 中的@Autowired手动注入的啊


        IP属地:四川7楼2022-01-14 18:26
        收起回复
          之前见过有人也提问这个,有个回答挺好:接口是“大佬”去约定返回值、方法名和参数,形成一种crud规范,后面的人根据接口返回值和参数就知道这个接口是干嘛的,然后让开发人员去实现这个接口,就算写接口的人离职了,后面来的人看到接口也能明白是什么意思


          IP属地:广东来自Android客户端8楼2022-01-14 19:00
          回复
            面向接口编程


            IP属地:广东来自Android客户端12楼2022-01-14 21:55
            回复