能懂!基于Springboot的用户增删查改(三层设计模式)
Made by Tianlanghttps://github.com/Tianlang-create背景左家垅大学安排计算机专业的学生在期末前进行了JavaWeb的实训Tianlang对此很疑惑1什么是数据库怎么使用 2怎么在IDEA连接数据库 3怎么搭建应用DSC框架 特别地Dao层或Repository怎么和数据库搭上关系Service层又怎么实现调用Dao接口Controller层和之前做的应用选择块有什么联系Xushu老师笑着说针对概念问题反正现在也没时间知道了具体方法如下连接数据库问题在src/main/resources/application.properties里添加如下代码?server.port8088 ?spring.datasource.urljdbc:mysql://localhost:3306/springdemo ?spring.datasource.usernameroot ?spring.datasource.password#你的数据库密码 ?spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver ?spring.jpa.hibernate.ddl-autoupdate这些代码分别是什么意思呢 1行是我们设置的端口号2-6行的开头都是spring框架内容jdbc:mysql:数据库驱动类型MySQL://localhost:数据库服务器地址本地主机:3306:数据库端口号MySQL默认端口/springdemo:数据库名称spring.datasource.driver-class-name是数据源的驱动类名com.mysql.cj.jdbc.Driver是MySQL数据库的驱动类名用于Java 8及以上版本特别地倘若我们要在终端实现SQL语句的输出可以再添加:?spring.jpa.show-sqltrue ?spring.jpa.properties.hibernate.format_sqltrueDao层实现和数据库交互后Service层怎么“通知”Dao我要使用1.Dao与数据库的“交互”在目录页新建了Dao软件包后话不多说我们直接拍上代码?package com.demo.springdemo.Dao; ?? ?import com.demo.springdemo.entity.User; ?import org.springframework.data.repository.CrudRepository; ?import org.springframework.stereotype.Repository; ?? ?Repository//spring的bean 细化了逻辑块 ?public interface UserRepository extends CrudRepositoryUser, Integer {//继承CrudRepository ?} ?? ?//参考路径:com/demo/springdemo/Dao/UserRepository.java怎么理解Dao层实现和数据库交互我们其实通过Spring框架之前博客写过如在第七行写下注解Repository标记一个类或接口为数据访问层DAO的实现这其实就是表明UserRepository接口是数据访问层的一部分。接下来继承CrudRepository接口之后UserRepository接口可以提供基本的CRUD操作并且可以根据需要添加自定义的方法来实现更复杂的数据访问逻辑肯定有同学会问什么是接口我该怎么使用接口假设我们有一个动物园里面有不同的动物。我们可以定义一个Animal接口如下?javaCopyInsertpublic interface Animal { ? ? ?void sound(); ?}这个接口定义了一个sound方法所有动物都应该能够发出声音。现在我们可以实现这个接口的不同类例如?javaCopyInsertpublic class Dog implements Animal { ? ? ?Override ? ? ?public void sound() { ? ? ? ? ?System.out.println(汪汪); ? ? } ?} ?? ?public class Cat implements Animal { ? ? ?Override ? ? ?public void sound() { ? ? ? ? ?System.out.println(喵喵); ? ? } ?}这两个类都实现了Animal接口但是它们的实现方式不同。现在我们可以使用这些类来实现动物园的功能如下?javaCopyInsertAnimal dog new Dog(); ?dog.sound(); // 汪汪 ?? ?Animal cat new Cat(); ?cat.sound(); // 喵喵通过使用接口我们可以实现不同类之间的解耦和扩展性。那么进入了我们Service层后其基本核心也是一样的。其实通过使用Autowired注解开发者可以不需要手动创建UserRepository的实现类也不需要手动注入依赖的bean。Spring会自动完成这些工作。2.Service层使用CRUD操作在Spring框架中Autowired注解可以自动注入依赖的bean。由于UserRepository是接口所以Spring会自动创建一个实现该接口的bean并将其注入到当前类中我们直接上代码?Service ?//配置Spring的bean ?public class UserService implements IUserService { ?? ? ? ?Autowired ? ? ?UserRepository userRepository; ? ? ?Override ? ? ?public User add(UserDto user) {//修改类型 ? ? ? ? ?User userPojo new User(); ? ? ? ? ?BeanUtils.copyProperties(user, userPojo); ? ? ? ? ?return userRepository.save(userPojo); ? ? ? ? ?//调用数据访问类方法 ? ? }着重理解的是我们不意味着在Service层只需要调用接口就行了使用Service注解来标记一个类表示它是一个服务层组件。然后使用依赖注入将DAO接口注入到服务层组件中以便在服务层中使用DAO的实现类来执行数据库操作此时我们看用户的增操作这里的UserDto user前一个是我们构建的用户实体类(内容个数如IDEmail等)user是我们在Controller接受的UserDto对象其实真正的增加操作只是userRepository.save(userPojo)其上两行是类型转换为User,UserDto的类是User的限制情况因为我这里是判定用户的错误输入情况以及网络攻击简而言之是以User形式存储在数据库中存储方法我们在之前的Dao层通过扩展CRUD实现相似的删除改变查询不再一一赘述了。Controller层–与网络的交流层我们之前在Service层不是要传入一个User吗源头就在这里我们直接放代码?RestController // 接口方法返回值为json ?RequestMapping(/user) ?// 前缀 localhost:8088/user ?public class User_controller { ?? ? ? ?Autowired ? ? ?IUserService userService;//IUserService 接口的实例 userService 是通过 Autowired 注解自动注入的。 ? ? ?//REST ? ? ?//增加 ? ? ?PostMapping ? ? ?public String add(Validated RequestBody UserDto user){//提示传入文本 ? ? ? ? ?User userNew userService.add(user); ? ? ? ? ?return ResponseMessage.success(userNew).toString(); ? ? }}直接看add功能RequestBody UserDto user代表了从JSON格式中自动提取useruserService.add是我们之前在Service中实现的add方法正确返回User后发送信息以上就是三层的实现流程该实例的所有代码请查询开头的github账号目前基本功能已经实现。江湖相逢缘是君感谢观看

相关新闻

YOLO + DeepSeek (LLM) 智慧消防系统 YOLO+deepsseek 火灾检测系统[火灾烟雾识别系统] YOLO加人工智能AI识别大模型 后端采用 FastAPI,前端采用 Vue

YOLO + DeepSeek (LLM) 智慧消防系统 YOLO+deepsseek 火灾检测系统[火灾烟雾识别系统] YOLO加人工智能AI识别大模型 后端采用 FastAPI,前端采用 Vue

YOLOdeepsseek 火灾检测系统[火灾烟雾识别系统]支持图片、视频、摄像头实时检测,AI智能识别火情,带后台管理,功能齐全 适合消防、安防、应急等领域111**“YOLO DeepSeek (LLM) 智慧消防系统”**设计方案。 用户认证系统(登录/注册…

2026/7/4 16:42:59 阅读更多 →
AI正在重塑企业运营方式:为什么电商行业正在率先拥抱智能客服

AI正在重塑企业运营方式:为什么电商行业正在率先拥抱智能客服

过去两年,AI几乎成为所有行业讨论最频繁的关键词之一。从大模型、AI Agent,到多模态能力与自动化工作流,人工智能正从“技术概念”逐步走向“生产工具”。2024年以来,随着生成式AI能力的持续提升,企业开始意识到&#…

2026/7/5 0:46:19 阅读更多 →
基于Java+SSM+Flask课程辅助教学网站(源码+LW+调试文档+讲解等)/课程辅助工具/在线教学平台/课程学习网站/教学辅助软件/网络教学资源/课程资料下载/在线辅导服务/学习辅助网站

基于Java+SSM+Flask课程辅助教学网站(源码+LW+调试文档+讲解等)/课程辅助工具/在线教学平台/课程学习网站/教学辅助软件/网络教学资源/课程资料下载/在线辅导服务/学习辅助网站

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

2026/5/17 11:10:55 阅读更多 →

最新新闻

终极解决方案:用ChromaControl实现所有RGB设备在雷蛇生态中的完美同步

终极解决方案:用ChromaControl实现所有RGB设备在雷蛇生态中的完美同步

终极解决方案:用ChromaControl实现所有RGB设备在雷蛇生态中的完美同步 【免费下载链接】ChromaControl 3rd party device lighting support for Razer Synapse. 项目地址: https://gitcode.com/gh_mirrors/ch/ChromaControl 还在为桌面上不同品牌的RGB设备各…

2026/7/5 0:45:59 阅读更多 →
Ceph自动化运维开发:openeuler/ceph_dev中Ansible与Terraform集成

Ceph自动化运维开发:openeuler/ceph_dev中Ansible与Terraform集成

Ceph自动化运维开发:openeuler/ceph_dev中Ansible与Terraform集成 【免费下载链接】ceph_dev ceph_dev is a project focus on some feature developing based on ceph 项目地址: https://gitcode.com/openeuler/ceph_dev 前往项目官网免费下载:h…

2026/7/5 0:43:58 阅读更多 →
【Springboot毕设全套源码+文档】基于springboot二次元商品商城系统的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot二次元商品商城系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/5 0:43:58 阅读更多 →
告别Selenium弹窗噩梦:Playwright实现无头浏览器文件自动下载实战

告别Selenium弹窗噩梦:Playwright实现无头浏览器文件自动下载实战

1. 项目概述:为什么我们要告别Selenium?如果你做过Web自动化测试或者数据抓取,尤其是涉及到文件下载的场景,那你大概率经历过“弹窗噩梦”。浏览器原生的“另存为”对话框,就像一堵无法逾越的高墙,横亘在你…

2026/7/5 0:39:55 阅读更多 →
从光学到产品:护眼钢化膜的技术原理与实现路径深度解析(以悟赫德 scinique 技术为例)

从光学到产品:护眼钢化膜的技术原理与实现路径深度解析(以悟赫德 scinique 技术为例)

1. 引言:为什么我们需要 "护眼" 的手机膜?随着 OLED 屏幕在智能手机中的全面普及,以及用户日均用屏时长的不断增加(据统计,2026 年国内用户日均手机使用时长已超过 6.5 小时),视疲劳正…

2026/7/5 0:39:55 阅读更多 →
ASM330LHH与PIC18F25K80的工业级运动跟踪系统设计

ASM330LHH与PIC18F25K80的工业级运动跟踪系统设计

1. 从传感器到系统:ASM330LHH与PIC18F25K80的硬件搭档当我在工业自动化项目中第一次接触到ASM330LHH这颗6DoF惯性测量单元(IMU)时,立刻被它的性能参数所震撼。作为意法半导体MEMS传感器家族的重要成员,它在一个3x2.5x0.83mm的封装内集成了三轴…

2026/7/5 0:35:54 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻