当前位置: 首页 > news >正文

【Spring Boot】四种核心类的依赖关系:实体类、数据处理类、业务处理类、控制器类

//1.配置项目环境,创建Spring Boot项目。
//2.数据库设置,配置数据库。
//3.创建实体类,映射到数据库。
//4.创建数据处理层类,Repository
//5.创建业务处理类,Service类
//6.创建控制器类,Controller类

Article.java

java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
    public class Article{
    @Id
        @GeneratedValue(strategy = GenerationType.AOTU)
        private Long id;
        private String title;
        private String content;
        private String author;
    
      //省略构造函数、getter和setter方法
      //省略toString方法
      //一个实体类完成了!


ArticleRepository.java(数据访问层类)
    '''java
    import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface ArticleRepository extends JpaRepository<Article,Long>{
//可以在此自定义查询方法
//根据作者名查询文章
List<Article> findByAuthor(String author);
//根据标题和作者查询文章
List<Article> findByTitleAndAuthor(String title,String author);
//使用JPQL查询语句查询文章
@Query("Select a FROM Article a WHERE a.title LIKE %:keyword% OR a.content LIKE %:keyword%")
List<Article> fintByKeyword(String keyword);
}
    

ArticleService.Java(业务逻辑层):
    '''java
    import org.springframework.beans.factory. annotation.Autowired;
    import org.springframework.stereotype.Service;
    import java.util.List;
    import java.util.Optional;

@Service
    public class ArticleService{
    private final ArticleRepository articleRepository;
    
    @Autowired
    public ArticleService(ArticleRepository articleRepository){
    this.articleRepository = articleRepository;    
    }
    
    public List<Article>getAllArticles(){
    return articleRepository.findAll();
    }
    
    public Optional<Article>getArticleById(Long id){
        return articleRepository.findByID(id);
    }
    
    public Article createArticle(Article article){
    return articleRepository.save(article);
    }
    
    /**
    public void updateArticle(Long id, Article article) {
        Optional<Article> existingArticle = articleRepository.findById(id);
        if (existingArticle.isPresent()) {
            Article updatedArticle = existingArticle.get();
            updatedArticle.setTitle(article.getTitle());
            updatedArticle.setContent(article.getContent());
            updatedArticle.setAuthor(article.getAuthor());
            articleRepository.save(updatedArticle);
        }
    }
    
    **/
    
    public void deleteArticle(Long id){
        articleRepository.deleteById(id);
    }
    
}

ArticleController.java(控制器类):
    '''java
    import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestContrller
@RequestMapping("/articles")
public class ArticleController{
    private final ArticleService articleService;
    
    @Autowired
    public ArticleControler(
    ArticleService articleService
    ){
    tihs.articleService = articleService;
    }
    
    @GetMapping
        public ResponseEntity<List<Article>>getAllArticles(){
    List<Article>articles = articleService.getAllArticles;
    return new ResponseEntity<>(articles,HttpStatus.OK)
    }
 //以下为粘贴
        @GetMapping("/{id}")
    public ResponseEntity<Article> getArticleById(@PathVariable Long id) {
        Optional<Article> article = articleService.getArticleById(id);
        return article.map(value -> new ResponseEntity<>(value, HttpStatus.OK))
                      .orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
    }

    @PostMapping
    public ResponseEntity<Article> createArticle(@RequestBody Article article) {
        Article createdArticle = articleService.createArticle(article);
        return new ResponseEntity<>(createdArticle, HttpStatus.CREATED);
    }

    @PutMapping("/{id}")
    public ResponseEntity<Void> updateArticle(@PathVariable Long id, @RequestBody Article article) {
        articleService.updateArticle(id, article);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteArticle(@PathVariable Long id) {
        articleService.deleteArticle(id);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }
}

}


 
 

相关文章:

【Spring Boot】四种核心类的依赖关系:实体类、数据处理类、业务处理类、控制器类

//1.配置项目环境&#xff0c;创建Spring Boot项目。 //2.数据库设置&#xff0c;配置数据库。 //3.创建实体类&#xff0c;映射到数据库。 //4.创建数据处理层类&#xff0c;Repository //5.创建业务处理类&#xff0c;Service类 //6.创建控制器类&#xff0c;Controller类 Ar…...

opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()

前面我们已经了解了Harris函数来进行角点检测&#xff0c;因为角点的特性&#xff0c;这些角点在图像旋转的时候也可以被检测到。但是&#xff0c;如果我们放大或缩小图像时&#xff0c;就可能会丢失图像的某些部分&#xff0c;甚至有可能增加角点的质量。这种损失的现象需要一…...

ES5 的构造函数和 ES6 的类有什么区别

文章目录 语法不同方法定义方式不同继承方式不同类内部的this指向不同静态成员定义方式不同访问器属性类的类型检查 在JavaScript中&#xff0c;类和构造函数都被用来创建对象&#xff0c;接下来会从以下几点说说两者的区别&#xff1a; 语法不同 构造函数使用函数来定义类使用…...

AUTOSAR配置与实践(配置篇) 如何条件控制PDU外发

AUTOSAR配置与实践(配置篇)如何条件控制PDU外发 一、需求1.1 需求简要分析1.2 需求进一步分析二、流程实现和具体配置一、需求 需要针对特定的PDU(外发)进行条件控制,这里要通过不同配置字进行PDU是否外发的控制 1.1 需求简要分析 正常PDU分组时分为两组,接收报文组和…...

2023年湖北中级工程师职称申报专业有哪些?甘建二告诉你

中级职称职称申报专业&#xff1a;环境工程、 土木建筑、土建结构、土建监理、土木工程、岩石工程、岩土、土岩方、风景园林、园艺、园林、园林建筑、园林工程、园林绿化、古建筑园林、工民建、工民建安装、建筑、建筑管理、建筑工程、建筑工程管理、建筑施工、建筑设计、建筑装…...

记录:ubuntu20.04+ORB_SLAM2_with_pointcloud_map+ROS noetic

由于相机实时在线运行需要ROS&#xff0c;但Ubuntu22.04只支持ROS2&#xff0c;于是重装Ubuntu20.04。上一篇文章跑通的是官方版本的ORB_SLAM2&#xff0c;不支持点云显示。高翔修改版本支持RGB-D相机的点云显示功能。 高翔修改版本ORB_SLAM2&#xff1a;https://github.com/ga…...

文心问数Sugar Bot :大模型+BI,多轮会话自动生成可视化图表与数据结论

Sugar BI 的文心问数功能是基于大语言模型实现的&#xff0c;支持您使用自然语言&#xff0c;通过多轮会话的方式&#xff0c;获取实时数据的图表展现&#xff0c;也可以自动为您总结与图表相关的业务结论。 文心问数功能邀测中&#xff0c;欢迎CSDN的用户前来报名&#xff1a;…...

21、WEB漏洞-文件上传之后端黑白名单绕过

目录 前言验证/绕过 前言 关于文件上传的漏洞&#xff0c;目前在网上的常见验证是验证三个方面&#xff1a; 后缀名&#xff0c;文件类型&#xff0c;文件头&#xff0c;其中这个文件头是属于文件内容的一个验证 后缀名&#xff1a;黑名单&#xff0c;白名单 文件类型&#xf…...

windows的django项目部署到linux的docker上

编辑dockerfile文件&#xff0c;可以自行寻找相关教程 创建镜像 docker bulid -t imagename:tag .查看镜像 docker images 如果想自己先试一下&#xff0c;那就需要运行容器 docker run -it -d -p 8000:8000 --name volume_name imagename:tag 查看容器 docker ps -a 进…...

【力扣】70. 爬楼梯 <动态规划>

【力扣】70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. …...

数据结构(3)

线性表是多个具有相同特征的数据的有限序列。 前驱元素&#xff1a;A在B前面&#xff0c;称A为B的前驱元素。 后继元素&#xff1a;B在A后面&#xff0c;称B为A的后继元素。 线性表特征&#xff1a; 1.一个元素没有前驱元素&#xff0c;就是头结点&#xff1b; 2.最后一个…...

深入浅出Pytorch函数——torch.nn.init.xavier_uniform_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

优橙内推安徽专场——5G网络优化(中高级)工程师

可加入就业QQ群&#xff1a;801549240 联系老师内推简历投递邮箱&#xff1a;hrictyc.com 内推公司1&#xff1a;浙江省邮电工程建设有限公司 内推公司2&#xff1a;北京宜通华瑞科技有限公司 内推公司3&#xff1a;浙江明讯网络技术有限公司 浙江省邮电工程建设有限公司 …...

2023年计算机设计大赛国三 数据可视化 (源码可分享)

2023年暑假参加了全国大学生计算机设计大赛&#xff0c;并获得了国家三等奖&#xff08;国赛答辩出了点小插曲&#xff09;。在此分享和记录本次比赛的经验。 目录 一、作品简介二、作品效果图三、设计思路四、项目特色 一、作品简介 本项目实现对农产品近期发展、电商销售、灾…...

工业生产全面感知!工业感知云来了

面向工业企业数字化转型需求&#xff0c;天翼物联基于感知云平台创新能力和5G工业物联数采能力&#xff0c;为客户提供工业感知云服务&#xff0c;包括工业泛协议接入、感知云工业超轻数采平台、工业感知数据治理、工业数据看板四大服务&#xff0c;构建工业感知神经系统新型数…...

Lnton羚通关于Optimization在【PyTorch】中的基础知识

OPTIMIZING MODEL PARAMETERS &#xff08;模型参数优化&#xff09; 现在我们有了模型和数据&#xff0c;是时候通过优化数据上的参数来训练了&#xff0c;验证和测试我们的模型。训练一个模型是一个迭代的过程&#xff0c;在每次迭代中&#xff0c;模型会对输出进行猜测&…...

冒泡排序算法

//version 1 void bubblesort(vector<int>& nums){int n=nums.size();for(int i...

无人机航管应答机 ping200XR

产品概述 ping200XR是一个完整的系统&#xff0c;旨在满足航管应答器和自动相关监视广播(ADS-B)的要求&#xff0c;在管制空域操作无人航空系统(UAS)。该系统完全可配置为模式A&#xff0c;模式C&#xff0c;模式S转发器和扩展ADS-B发射机的任何组合。ping200XR包括一个精度超…...

oracle归档日志满了导致启动不起来解决

oracle启动不起来解决 原因&#xff1a;闪回归档区的空间满了 [oraclepre-oracle ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 22 14:48:50 2023Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to: Oracle Database 11g…...

高等数学:线性代数-第二章

文章目录 第2章 矩阵及其运算2.1 线性方程组和矩阵2.2 矩阵的运算2.3 逆矩阵2.4 Cramer法则 第2章 矩阵及其运算 2.1 线性方程组和矩阵 n \bm{n} n 元线性方程组 设有 n 个未知数 m 个方程的线性方程组 { a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 a 21 x 1 a 22 x 2 ⋯ a …...

30_AI短片实战第三弹:头盔一致性、连续动作推导与情绪特写叠加(附提示词)

文章目录 一、锁定造型:为角色建立“三视图”头盔参考 问题诊断 解决方案:角色三视图思路 二、连续动作推导:从一张图“衍生”出下一帧 工作流创新 具体操作 效果 适用场景 三、怪兽摔落镜头:场景切换中的叙事连续性 镜头设定 关键调整点 生成结果 四、情绪特写:瞳孔与面罩…...

跟着 MDN 学 HTML day_34:(深入XML 中的 CDATASection 接口)

在 Web 开发的学习旅程中&#xff0c;我们大部分时间都在与 HTML 打交道。然而&#xff0c;当涉及到数据存储、配置文件或 RSS 订阅时&#xff0c;XML 依然扮演着不可或缺的角色。今天&#xff0c;我们将聚焦于 XML 世界中一个看似不起眼但在特定场景下极其有用的接口&#xff…...

告别限速!百度网盘解析工具终极使用指南

告别限速&#xff01;百度网盘解析工具终极使用指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB的龟速下载而烦恼吗&#xff1f;今天我要为你介绍一个…...

告别玄学调音!手把手教你用Adobe Audition和杰里SDK搞定蓝牙音箱EQ

数据驱动的蓝牙音箱EQ调音实战&#xff1a;从频响分析到SDK参数优化 在音频产品开发中&#xff0c;音质调试往往被视为一门"玄学"——依赖工程师的"金耳朵"和经验积累。这种传统方法不仅效率低下&#xff0c;更难以保证结果的可重复性。本文将彻底改变这一…...

终极免费网盘直链下载助手:一键获取九大网盘真实下载地址,告别龟速下载!

终极免费网盘直链下载助手&#xff1a;一键获取九大网盘真实下载地址&#xff0c;告别龟速下载&#xff01; 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百…...

Nintendo Switch存储管理终极指南:NxNandManager完全解决方案

Nintendo Switch存储管理终极指南&#xff1a;NxNandManager完全解决方案 【免费下载链接】NxNandManager Nintendo Switch NAND management tool : explore, backup, restore, mount, resize, create emunand, etc. (Windows) 项目地址: https://gitcode.com/gh_mirrors/nx/…...

【仅限首批200家认证企业】SITS 2026 Embedding性能基线报告(含Top5厂商真实benchmark对比)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生Embedding优化&#xff1a;SITS 2026语义搜索性能提升技巧 在 SITS 2026&#xff08;Semantic Indexing & Text Search&#xff09;基准测试中&#xff0c;AI 原生 Embedding 模型的推理延迟…...

利用AI与间隔重复技术,在Obsidian中自动化生成学习闪卡

1. 项目概述与核心价值如果你和我一样&#xff0c;是个重度 Obsidian 用户&#xff0c;同时又对间隔重复记忆法&#xff08;Spaced Repetition&#xff09;情有独钟&#xff0c;那你肯定遇到过这个痛点&#xff1a;把笔记整理成闪卡&#xff08;Flashcards&#xff09;的过程&a…...

AMD Ryzen终极调试指南:5分钟掌握SMUDebugTool核心功能

AMD Ryzen终极调试指南&#xff1a;5分钟掌握SMUDebugTool核心功能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...

从《只狼》到你的项目:聊聊UE4布娃娃系统如何做出更‘有戏’的死亡动画

从《只狼》到你的项目&#xff1a;用UE4布娃娃系统打造叙事级死亡动画 在《只狼》中&#xff0c;当敌人从悬崖坠落时扭曲的肢体&#xff0c;或是Boss战败后跪地缓缓倒下的瞬间&#xff0c;这些死亡动画远不止是技术实现——它们成为玩家情感体验的延伸。作为UE4开发者&#xff…...