java中的service层,dao层,controller层的理解

2023-11-14

基本概念

DAO层:
DAO层叫数据访问层,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作。

Service层:
Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务。业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。

Controler层:
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。
controller层主要调用Service层里面的接口来控制具体的业务流程,控制层的配置也要在配置文件中进行。
Service与Controler的区别:
Controller和Service的区别是:Controller负责具体流程的控制;Service层负责业务模块的设计。

总结:
Dao是底层,可以借助数据表实现增删改查的功能。然后service层可以将一个或多个dao层封装成为一个服务,controller层转发,接受页面传的参数,由service处理检查数据的合理性,controller接到返回值传给页面。
举个例子:假如有一个客人(页面),那么他点的菜可以通过服务员(controller)传给厨师长(service),厨师长在传给做菜的师傅1(dao1)、师傅2(dao2)等等,这些师傅知道做菜用什么材料等,这就是dao层,负责最基础的操作,dao层负责完成service的任务

设计做法

dao层:接口实现层(底层),与mybatis有紧密的联系。一般实现对数据内容的增删改查。
设计思路: 1.设计dao层接口
2.在Spring的配置文件中定义此接口的实现类
3.在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪一个

public interface StudentDao extend BaseDao<Student>{
Student queryByName(String name);
}

service层:dao层的上层,指在完成业务模块的逻辑功能.service接口来进行业务处理,service层的业务层具体要调用已经定义的dao层接口,封装serivce层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。
设计思路: 1.设计接口
2.设计其实现类
3.在Spring的配置文件中配置其实现类的关联

public interface StudentService extend BaseService<Student>{
Student queryByName(String name)
}

controller层:负责具体的业务模块逻辑控制.针对具体的业务逻辑,会有具体的控制.通过调用service层来控制业务具体流程.设计出多个可利用的子单元模块.

@ResponseBody
@RequestMapping(value = "/queryStudents" ,method = RequestMethod.GET)
public AjaxRes queryStudent(Student student, int pageSize,int pageNum){
if(!StringUtils.isEmpty(student.getCode())){
student.setName(student.getCode());
}
PageInfo<Student> studentList=(PageInfo<Student>) studentService.queryByPage(student,pageNum,pageSize);
return AjaxResUtil.genSuccess(studentList,"${search}${successed}");
}

功能

(1)各层简介
Dao层(mapper层)
service层(业务层)
controller层(控制层)
Dao层
即数据持久层,对数据做持久化操作。也被称为mapper层。声明为接口。
dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
Service层
业务层,service层的作用为完成功能设计。存放业务逻辑处理,不直接对数据库进行操作,有接口和接口实现类,提供controller层调用的方法。
调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计。(也就是说对于项目中的功能的需求就是在这里完成的)(对Dao层接口的实现)
Controller层
控制器层,controller层的功能为请求和响应控制。
controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。

各层理解

在这里插入图片描述通俗的讲 : Controller层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称Dao层)我需要什么样的半成品,副厨们(Dao层)就负责完成厨师长(Service)交代的任务。

如果一个厨师既负责跑堂,又负责烹饪。那这个饭店的管理一定非常混乱吧。小工就是DAO,从食材库里(数据源)取出食材(原始数据),进行简单处理(数据对象化)。厨师就是Service,找到小工(DAO),获取各种半成品(对象化数据),加工成顾客需要的菜肴(最终数据)。跑堂就是Controller,负责接单(提交数据)上菜(响应数据),是顾客与后厨间的媒介(提供用户与后台程序的接口)。各司其职(高内聚),轻松协作(低耦合),就是分层思想的目标。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中的service层,dao层,controller层的理解 的相关文章

随机推荐

  • element 时间选择器时间跨度设置 7天

  • 国内工业数字化进程的推进,难点在哪里?

    推进工业数字化进程 通常称为工业 4 0 或工业物联网 IIoT 可能是一项复杂且具有挑战性的工作 在此过程中 经常会遇到一些困难和障碍 包括 1 遗留系统 许多工业设施仍然依赖于未考虑数字化设计的遗留设备和系统 将这些旧系统与现代数字技术
  • Java bean 详解

    JavaBean 介绍 功能特点 分类 组成 属性 方法 事件 event 范围 scope 页面page 请求request 对话session 应用application 任务 设计目标 1 紧凑而方便的创建和使用 2 完全的可移植性
  • Selenium分布式自动化测试平台 Standalone Server 4.0 搭建

    最新的selenium测试平台大概有这么几个组件 Selenium Standalone Server 用来搭建远程测试平台以及分布式测试 Selenium WebDriver 最基础的用来创建测试脚本以及用来和上面的server进行交互的
  • CSP 202305-3 解压缩

    这道T3主要是能够读懂题目 然后根据题意进行模拟 需要比较多的位运算 在此题 我选择用uint8 t存储一个字节 然后对字符和数字进行了转换 include
  • Java多线程-锁的概念

    1 结婚戒指的意义 根据文献记载 最早使用戒指人就是希腊的悲剧英雄 被缚的普罗米修斯 宙斯为惩罚普罗米修斯盗火给人类 将他绑缚在考卡苏斯山上 每天都有一只老鹰飞到山上 将他的内脏啄出 到了夜晚 他所失去的器官又会重新长出来 后来 大力士海格
  • Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷

    Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷 文章目录 Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷 一 NFS Provisioner 简介 二 创建
  • bert-as-service配置

    环境配置 conda create n bert service python 3 8 conda activate bert service pip install user nvidia pyindex pip install user
  • 11.Java数据库连接

    Java数据库连接 概念 在软件开发中 经常需要与数据库进行交互来存储和检索数据 Java提供了一种称为JDBC Java Database Connectivity 的API 用于连接和操作各种类型的关系型数据库 数据库连接是指通过Jav
  • 卷积与傅立叶变换

    一 卷积 1 一维的卷积 连续 在泛函分析中 卷积是通过两个函数 f x f x f x 和 g x g x g x 生成第三个函数的一种算子 它代表的意义是 两个函数中的一个 我取 g x
  • 私人网站域名服务器公安备案指南【网站备案】

    今天收到了工信部的审核通过短信 你的服务器要想使用域名解析 其中一个要求就是服务器要有备案 很开心 但 事情没那么简单 要求你30天内进行公安备案 我打开谷歌网址 开始了我的坎坷备案之旅 一天下午 加一天晚上 第二天下午
  • vue —— 路由 replace

    作用 控制路由跳转时操作浏览器历史记录的模式 2 浏览器的历史记录有两种方式 分别为 push 和 replace push是追加历史记录 replace是替换当前记录 路由跳转的时候默认 push 3 开启replace模式
  • CPU使用率和负载Load计算方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Loadavg分析 Loadavg浅述 cat proc loadavg 可以看到当前系统的load cat proc loadavg 0 01 0 02 0 05 2 3
  • 判断两条线段是否相交(C++)

    背景 在做51nod上的第1951题时 需要根据给出的两条线段来判断这两条线段是否相交 所以在这里记录一下 判断两条线段是否相交有两步 快速排斥计算 跨立计算 快速排斥 给出线条AB CD 如果以AB CD为对角线的矩形不相交 那么AB C
  • mysql5.5安装最后卡主_在MySQL5.5版本时安装到最后一步卡死的解决办法

    今天给老师安装mysql 5 5 版本时出了问题 老师的电脑为windows7 mysql安装版本为mysql 5 5 安装到最后一步 mysql实例配置最后一步卡死了 安装了多次也没有方法 百度了许多方法 比如删除注册表 删除某些主要文件
  • 量化交易项目怎么做

    同学们前面两期量化交易内容 Python量化交易入门 量化交易的历史 文章目录 学习目标 1 量化交易研究流程 1 1 分析结果 1 2 什么是策略 1 3 流程包含的内容 二 量化开发和研究岗位的要求 学习目标 1 说明量化交易的研究流程
  • SourceTree 解決冲突 Please commit your changes or stash them before you merge.

    目录 本机环境 通过 Sourcetree 拉取代码时提示冲突信息 一 本机环境 本机系统 Mac git 2 24 1 git version 查看 二 通过 Sourcetree 拉取代码时提示冲突信息 原因 同分支下 其他伙伴修改的
  • @SpringBootApplication失效问题

    SpringBootApplication的默认扫描范围 在练习springsecurity中 突然发现spring的自动配置失效 需要手动的在主应用程序类添加 ComponentScan才可以扫描到 然后排查发现idea自动在根路径创建一
  • 提示工程师指南4-ChatGPT Prompt Engineering

    ChatGPT Prompt Engineering 在这个部分 我们将介绍 ChatGPT 的最新提示工程技术 包括技巧 应用 限制 论文和额外的阅读材料 主题 与 ChatGPT 对话 Python 笔记本 请注意 本部分正在紧密开发中
  • java中的service层,dao层,controller层的理解

    基本概念 DAO层 DAO层叫数据访问层 属于一种比较底层 比较基础的操作 具体到对于某个表的增删改查 也就是说某个DAO一定是和数据库的某一张表一一对应的 其中封装了增删改查基本操作 Service层 Service层叫服务层 被称为服务