MVC框架中Entity层,DAO层,Service层,Controller层的关系和区别 |
您所在的位置:网站首页 › 下面属于mvc设计模式的是 › MVC框架中Entity层,DAO层,Service层,Controller层的关系和区别 |
分层的作用:
在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。 entity层的作用: 用于存放的实体类,与数据库中的属性值基本保持一致。实现set和get的方法。 public class User { /* 用户id */ private Long id; /* 获取用户id */ public Long getId() { return id; } /* 设置用户id */ public void setId(Long id) { this.id = id; } } DAO层(mybatis的mapper层,数据访问层,data access object)DAO层的作用:DAO层就是数据持久层,直接对数据库进行数据持久化操作。对某个表进行增删改查基本操作。 DAO层的设计: 首先是设计DAO任务的接口(增删改查),再设计其实现的类。然后在Spring的配置文件中配置接口和实现类的关联。DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。然后就可以在Service层中调用DAO层的接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类。 public interface userMapper { int deleteByPrimaryKey(Long id); int insert(user record); int insertSelective(user record); user selectByPrimaryKey(Long id); int updateByPrimaryKeySelective(user record); int updateByPrimaryKey(user record); } Service层(服务层,逻辑层)Service层的作用:对业务模块的逻辑应用设计。根据具体的业务逻辑封装Dao层的操作,对外表现为实现一种功能 / 服务。例如:网购生成订单时,不仅要插入订单信息记录,还要查询商品库存是否充足,购买是否超过限制等等。 Service层的设计: 同样是首先设计接口,再设计其实现的类,实现类中要调用dao层接口。每个接口分别封装一个服务的业务处理方法。具体实现在serviceImpl中。接着再Spring的配置文件中配置其实现的关联。这样我们就可以在Controller层中调用Service接口来进行业务处理。DAO面向表,Service面向业务。后端开发时先在数据库中设计出所有表,然后对每一张表设计出DAO层,然后根据具体的业务逻辑进一步封装DAO层成一个Service层,对外提供成一个服务。 public interface UserService extends Service { }service的 impl 是把mapper和service进行整合的文件。 Controller层( web 层,控制器)Controller层的作用: 控制具体模块的业务流程。负责请求转发,接受前端传过来的参数,调用Serice层来实现这个业务逻辑,得到返回值,再传给页面。 在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。 @RestController @RequestMapping("/user") public class UserController { @Resource private UserService userService; @PostMapping("/add") public Result add(User user) { userService.save(user); return ResultGenerator.genSuccessResult(); } @PostMapping("/delete") public Result delete(@RequestParam Integer id) { userService.deleteById(id); return ResultGenerator.genSuccessResult(); } @PostMapping("/update") public Result update(User user) { userService.update(user); return ResultGenerator.genSuccessResult(); } @PostMapping("/detail") public Result detail(@RequestParam Integer id) { User user = userService.findById(id); return ResultGenerator.genSuccessResult(user); } @PostMapping("/list") public Result list(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "0") Integer size) { PageHelper.startPage(page, size); List list = userService.findAll(); PageInfo pageInfo = new PageInfo(list); return ResultGenerator.genSuccessResult(pageInfo); } }View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示,
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |