【SpingBoot】详细介绍SpringBoot项目中前端请求到数据库再返回前端的完整数据流转,并用代码实现

在SpringBoot项目中,前端请求到最终返回的完整数据流转一般包括以下几个步骤:

  1. 前端发送HTTP请求到后端Controller。

  2. Controller接收到请求后,调用相关Service处理业务逻辑。

  3. Service调用DAO层获取数据。

  4. DAO层访问数据库获取数据。

  5. 数据库返回数据给DAO层。

  6. DAO层将数据返回给Service层。

  7. Service层将处理结果返回给Controller。

  8. Controller将结果封装为HTTP响应,返回给前端。

下面我们通过一个简单的例子来演示完整的数据流转:

  1. 前端发送HTTP请求

在前端页面上,我们发送一个GET请求到后端Controller,请求获取所有的用户数据:

$.ajax({url: "/users",type: "GET",dataType: "json",success: function(data) {// 处理返回的数据}
});

      2.Controller接收到请求后,调用相关Service处理业务逻辑

在后端,我们定义一个UserController类来处理请求:

@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/")public ResponseEntity<List<User>> getAllUsers() {List<User> users = userService.getAllUsers();return new ResponseEntity<>(users, HttpStatus.OK);}
}

在该类中,我们使用@Autowired注解注入了一个UserService对象,并定义了一个@GetMapping注解的方法来处理GET请求。该方法调用了UserService对象的getAllUsers()方法。

         3.Service调用DAO层获取数据

在UserService类中,我们实现getAllUsers()方法:

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic List<User> getAllUsers() {return userDao.getAllUsers();}
}

在该类中,我们使用@Autowired注解注入了一个UserDao对象,并实现了UserService接口的getAllUsers()方法。

  4.DAO层访问数据库获取数据

在UserDao类中,我们使用JdbcTemplate访问数据库:

@Repository
public class UserDaoImpl implements UserDao {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic List<User> getAllUsers() {String sql = "SELECT * FROM user";List<User> users = jdbcTemplate.query(sql, new UserMapper());return users;}private static final class UserMapper implements RowMapper<User> {@Overridepublic User mapRow(ResultSet rs, int rowNum) throws SQLException {User user = new User();user.setId(rs.getLong("id"));user.setUsername(rs.getString("username"));user.setEmail(rs.getString("email"));return user;}}
}

在该类中,我们使用@Autowired注解注入了一个JdbcTemplate对象,并实现了UserDao接口的getAllUsers()方法。该方法执行了一条查询SQL语句,将结果集映射为一个List<User>对象。

5.数据库返回数据给DAO层

JdbcTemplate会将查询结果封装为一个ResultSet对象返回。

6.DAO层将数据返回给Service层

UserDao将ResultSet对象映射为List<User>对象后,返回给UserService。

7.Service层将处理结果返回给Controller

UserService将List<User>对象返回给UserController。

8.Controller将结果封装为HTTP响应,返回给前端

UserController将List<User>对象封装为HTTP响应,返回给前端:

[{"id": 1,"username": "user1","email": "user1@example.com"},{"id": 2,"username": "user2","email": "user2@example.com"}
]

通过上述步骤,我们成功实现了SpringBoot项目中前端请求到数据库再返回前端的完整数据流转。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机实验笔记】中断篇(一) 外部中断

目录 前言中断系统概述寄存器说明中断优先级寄存器&#xff08;IP&#xff09;中断允许控制寄存器&#xff08;IE&#xff09;中断请求标志寄存器&#xff08;TCON&#xff09; 外部中断配置软件实现按键事件的外部中断实现 遇到的问题总结 前言 中断是单片机非常重要的概念&a…

2021江苏省赛热身赛 C Magic Rabbit(数形结合)

2021江苏省赛热身赛 C Magic Rabbit(数形结合) Magic Rabbit 非常好且巧妙地一道题。 大意&#xff1a;给出三种溶液 &#xff0c; 三种溶液分别含有不同浓度的 x &#xff0c;y 两种物质。 溶液x (mg/ml)y (mg/ml)溶液1x1y1溶液2x2y2溶液3x3y3 给出 Q 组询问 &#xff0c…

MySQL 8.0.34安装教程

一、下载MySQL 1.官网下载 MySQL官网下载地址&#xff1a; MySQL :: MySQL Downloads &#xff0c;选择下载社区版&#xff08;平时项目开发足够了&#xff09; 2.点击下载MySQL Installer for Windows 3.选择版本8.0.34&#xff0c;并根据自己需求&#xff0c;选择下载全社区安…

flutter报错-cmdline-tools component is missing

安装完androidsdk和android studio后&#xff0c;打开控制台&#xff0c;出现错误 解决办法 找到自己安装android sdk的位置&#xff0c;然后安装上&#xff0c;并将下面的勾选上 再次运行 flutter doctor 不报错&#xff0c;出现以下画面 Doctor summary (to see all det…

WebSocket的那些事(5-Spring中STOMP连接外部消息代理)

目录 一、序言二、开启RabbitMQ外部消息代理三、代码示例1、Maven依赖项2、相关实体3、自定义用户认证拦截器4、Websocket外部消息代理配置5、ChatController6、前端页面chat.html 四、测试示例1、群聊、私聊、后台定时推送测试2、登录RabbitMQ控制台查看队列信息 五、结语 一、…

超图嵌入论文阅读2:超图神经网络

超图嵌入论文阅读2&#xff1a;超图神经网络 原文&#xff1a;Hypergraph Neural Networks ——AAAI2019&#xff08;CCF-A&#xff09; 源码&#xff1a;https://github.com/iMoonLab/HGNN 500star 概述 贡献&#xff1a;用于数据表示学习的超图神经网络 (HGNN) 框架&#xf…

【高阶数据结构】红黑树 {概念及性质;红黑树的结构;红黑树的实现;红黑树插入操作详细解释;红黑树的验证}

红黑树 一、红黑树的概念 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉查找树&#xff0c;在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有…

旅游APP外包开发注意事项

旅游类APP通常具有多种功能&#xff0c;以提供给用户更好的旅行体验。以下分享常见的旅游类APP功能以及在开发和使用这些APP时需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 常见功能…

八大排序算法----堆排序

堆排序的基本步骤&#xff1a;&#xff08;以从大到小的顺序排序为例&#xff09; 1.构建大顶堆&#xff08;每个结点的值都大于或等于其左右孩子结点的值&#xff09; 2.排序&#xff1a;每次堆顶的元素取出来&#xff08;整个堆中值最大&#xff09;&#xff0c;与最后一个…

drf之--认证组件、权限组件(django项目国际化)、频率组件、排序

视图集回顾 # 1 9 个视图子类-GenericAPIView5个视图扩展类的组合-ListAPIView,CreateAPIView,DestroyAPIView,RetrieveAPIView,UpdateAPIView-ListCreateAPIView-RetrieveDestroyAPIView,RetrieveUpdateAPIView,RetrieveUpdateDestroyAPIView-class TestView(ListAPIView):qu…

数学建模圈养湖羊的空间利用率

数学建模圈养湖羊的空间利用率 问题&#xff1a;规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养&#xff0c;适应不同种类、不同阶段的牲畜对空间的不同要求&#xff0c;以保障牲畜安全和健康&#xff1b;与此同时&#xff0c;也要尽量减少空间闲置所造成的资源浪费…

Code Inspector:点击页面元素自动定位到代码

Code Inspector是一个开发提效的神器 点击页面上的 DOM 元素&#xff0c;它能自动打开 IDE 并定位到 DOM 对应源代码位置 文档 https://inspector.fe-dev.cn/https://github.com/zh-lx/code-inspector 目录 1、安装2、配置2.1、webpack2.2、vue2.3、vite 3、使用 1、安装 n…

入栏需看——学习记忆

记忆方法千千种&#xff0c;本栏意在梳理其中道道来&#xff0c;旦有小得&#xff0c;肥肠幸耶。从不同角度分析学习记忆。 逻辑篇 有逻辑 用思维导图 思维导图记忆有逻辑的文本/内容 理论 巧记书本结构–思维导图 模仿 HCIE-Cloud Computing LAB备考第一步&#xff1a…

Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)

在本教程中&#xff0c;我们将使用Python和Mirai来开发一个QQ机器人&#xff0c;本文提供了三个教学视频&#xff0c;包教包会&#xff0c;本文也很贴心贴了代码和相关文件。话不多说&#xff0c;直接开始教学。 目录 一、安装配置MIrai 图片验证码报错&#xff1a; 二、机器…

vue-cli中总提示组件没有正确注册

这里写目录标题 一、报错提示二、修改办法 一、报错提示 二、修改办法 <template><div><aside-component style"width: 15%"></aside-component></div> </template><script> import AsideComponent from /components/Asi…

【学习方法论】学习的三种境界、三种习惯、三个要点,三个心态

学习的三种境界、三种习惯、三个要点&#xff0c;三个心态 三种学习境界 苦学 古人云&#xff1a;“头悬梁、锥刺股”&#xff0c;勤学苦练是第一境界。处于这种层次的同学&#xff0c;觉得学习枯燥无味&#xff0c;对他们来说学习是一种被迫行为&#xff0c;体会不到学习中的…

NATAPP使用详细教程(免费隧道内网映射)

NATAPP - https://natapp.cn/tunnel/lists NATAPP 在开发时可能会有将自己开发的机器上的应用提供到公网上进行访问&#xff0c;但是并不想通过注册域名、搭建服务器&#xff1b;由此可以使用natapp&#xff08;内网穿透&#xff09; 购买免费隧道 修改隧道配置 看自己的web…

JAVA毕业设计096—基于Java+Springboot+Vue的在线教育系统(源码+数据库+18000字论文)

基于JavaSpringbootVue的在线教育系统(源码数据库18000字论文)096 一、系统介绍 本系统前后端分离 本系统分为管理员、用户两种角色(管理员角色权限可自行分配) 用户功能&#xff1a; 注册、登录、课程预告、在线课程观看、学习资料下载、学习文章预览、个人信息管理、消息…

【计算机视觉项目实战】中文场景识别

✨专栏介绍&#xff1a; 经过几个月的精心筹备&#xff0c;本作者推出全新系列《深入浅出OCR》专栏&#xff0c;对标最全OCR教程&#xff0c;具体章节如导图所示&#xff0c;将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。 &#x1f468;‍&…

【Two Stream network (Tsn)】(二) 阅读笔记

贡献 将深度神经网络应用于视频动作识别的难点&#xff0c;是如何同时利用好静止图像上的 appearance information以及物体之间的运动信息motion information。本文主要有三点贡献&#xff1a; 1.提出了一种融合时间流和空间流的双流网络&#xff1b; 2.证明了直接在光流上训…