前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1开发测试平台(四)Controller+Service +Dao三层的功能划分

从0到1开发测试平台(四)Controller+Service +Dao三层的功能划分

作者头像
周辰晨
发布2020-07-02 16:57:36
7680
发布2020-07-02 16:57:36
举报

Controller/Service/DAO简介

Controller是管理业务(Service)调度和管理跳转的。

Service是管理具体的功能的。

Controller只负责管理,而Service负责实施。

DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删改查如何去实现一个功能,dao是不管的。

依据Controller+Service +Dao分层对前面我们构建的springboot项目进行适当优化

分层设计可以使得代码更规范,软件更有层次感,不同层负责不同功能,以免所有代码都写在一个类里面,一坨一坨的,眉毛胡子一把抓的感觉,项目一旦复杂起来代码根本没办法看,难以维护。你也可以把所有代码都写在UserController里,但是跟人协作开发,或者别人维护你的代码的时候会被喷死。

改造前的调用图

1.mapper目录改成dao

2.mapper目录下的UserMapper.xml改成UserDao.xml

3.增加service目录

4.新增UserService.java文件,新增代码如下

代码语言:javascript
复制
package com.caomingyu.cctestplatform.service;

import com.caomingyu.cctestplatform.bean.User;

import java.util.List;

public interface UserService {
    List<User> queryUserList();
}

5.在service目录下新建impl目录

6.在impl目录,新建UserServiceImpl.java,实现UserService接口,之前是在UserController直接调用dao层,现在把dao层调用放到service层,controller改成调用service层,改造之后的UserController.java以及UserServiceImpl.java代码如下

代码语言:javascript
复制
UserServiceImpl.java
代码语言:javascript
复制
package com.caomingyu.cctestplatform.service.impl;

import com.caomingyu.cctestplatform.bean.User;
import com.caomingyu.cctestplatform.dao.UserDao;
import com.caomingyu.cctestplatform.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public List<User> queryUserList() {
        return userDao.queryUserList();
    }
}

代码语言:javascript
复制
UserController.java
代码语言:javascript
复制
package com.caomingyu.cctestplatform.controller;

import com.caomingyu.cctestplatform.bean.User;
import com.caomingyu.cctestplatform.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/queryUser")
    @ResponseBody
    public List<User> queryUser(){
        List<User> userList = userService.queryUserList();
        return userList;
    }
}

至此,项目改造完毕,改造之后的调用流程如下

改造之后的代码结构图如下

我们重新启动项目,访问测试接口

http://localhost:8081/queryUser,仍然成功访问

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师影响力 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档