针对外部一个输入信息后的提交操作,将数据更新入数据库为场景作分析:
可以在HTTP请求中直接传入数据库操作语句,后台接收后直接执行此操作,然后返回操作结果,流程结束,看起来最简。
但是,如果返回的结果可能是传给View层显示的JSP,也可能是传给Web service的客户端,那么流程控制逻辑有所不一样,所以需要将后台操作抽象成Service,流程控制逻辑抽象成Controller。
但是,如果这个提交对应的不仅是对应一个数据库操作,而涉及多个数据库操作呢?所以请求操作语句不如请求方法,数据库操作可在这个Service方法里包装。 但是,如果这个方法里的数据库操作要被很多场景使用,那么就需要从Service里抽象出DAO方法。
但是,DAO方法,如果输入的条件参数是不确定的,难道要为每种特定参数都写一个DAO方法?那么需要将参数可选话,方法可以仍用一个。这个Mybatis有这方面的支持。
所以,一步步分析下来,感觉从Controller, Service, DAO这一层层都有必要,不可或缺。Mybatis通过配置将DAO封装好了方法供Service调用,省了写很多Java代码。