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就可以了。

猜你喜欢

转载自blog.csdn.net/qq_23418043/article/details/82078969
今日推荐