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

}

}

}

相关推荐
数据知道7 小时前
PostgreSQL 故障排查:万字详解如何找出数据库中的死锁
数据库·postgresql
AI_56788 小时前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
choke2338 小时前
软件测试任务测试
服务器·数据库·sqlserver
龙山云仓8 小时前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
IT邦德8 小时前
OEL9.7 安装 Oracle 26ai RAC
数据库·oracle
jianghua0018 小时前
Django视图与URLs路由详解
数据库·django·sqlite
那我掉的头发算什么8 小时前
【Mybatis】Mybatis-plus使用介绍
服务器·数据库·后端·spring·mybatis
倔强的石头1068 小时前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库·kingbase
_Johnny_8 小时前
ETCD 配额/空间告警模拟脚本
数据库·chrome·etcd
静听山水8 小时前
StarRocks查询加速
数据库