Java学习——为什么要封装mybatis的mapper

刚刚学mybatis的人一定跟我有一样的疑问,为什么我们需要mapper层,service接口层,service实现层,service的代码只是调用了mapper的方法,为什么不可以直接调用呢?像下面代码一样。

@Autowired
private OracleSyncMapper oracleSyncMapper;

public App(){
    oracleSyncMapper.getObject();
}

但是这样调用就有一个问题,假如需求变了,我们不想要原汁原味的Object对象,需要给Object加点辣椒,比如某个属性值+1。这个简单的要求可以通过sql语句来实现,但是更复杂的就需要java代码来实现,但是mapper只是个接口,具体实现类是mybatis帮我们实现的,所以我们就只能在App添加代码了。如下:

@Autowired
private OracleSyncMapper oracleSyncMapper;

public App(){
    Object obj = oracleSyncMapper.getObject();
    obj.a +=1;
}

假如需求又变了,不仅要+1,还要*2,这时候App又要添加一行代码。如果有100个类对应的mapper都不想要原汁原味的object,那么App中就要添加很多代码,增加代码的冗余和减少代码维护性。

这时候如果我们定义了Service层和Service实现层,我们只需要在Service实现层定义object需要加什么料,返回一个加工过得object就可以了。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值