【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);

}

}

}

相关推荐
麦聪聊数据4 分钟前
连锁零售全域数据管控(下):API 化服务输出,释放全域数据业务价值
数据库
奇树谦22 分钟前
NAS + 对象存储 + LMDB/HDF5:海量小文件存储最佳实践
数据库
观远数据38 分钟前
决策闭环的第三公里:从洞察到行动之间,AI能补上什么
大数据·数据库·人工智能
满昕欢喜1 小时前
2.4 本地服务器组和中央管理服务器
数据库·sqlserver
空堂与归1 小时前
Python 操作 MySQL 与 Redis:AI 应用的数据读写双引擎
数据库
2401_873479402 小时前
IPv6查出来的地理位置是错的?用双栈IP库解决定位偏差问题
网络·数据库·tcp/ip·ip
CNSSIRD数据库2 小时前
中国创新型中小企业研究数据库2022-2026
大数据·数据库·数据分析·论文笔记
2601_963282772 小时前
极寒区域无线通信系统工程实战:黑龙江冰雪环境对讲机组网、射频损耗与设备耐寒可靠性优化全指南
大数据·数据库·人工智能
小王同学66662 小时前
Django 5 中实现文件上传功能
数据库·django·sqlite
zuozewei3 小时前
《GB/T 47241-2026 - 虚拟电厂技术导则》国标解析.md
数据库