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

}

}

}

相关推荐
林的快手39 分钟前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
HEU_firejef1 小时前
Redis——缓存预热+缓存雪崩+缓存击穿+缓存穿透
数据库·redis·缓存
KELLENSHAW2 小时前
MySQL45讲 第三十七讲 什么时候会使用内部临时表?——阅读总结
数据库·mysql
SelectDB2 小时前
飞轮科技荣获中国电信星海大数据最佳合作伙伴奖!
大数据·数据库·数据分析
core5123 小时前
flink cdc各种数据库 jar下载地址
mysql·oracle·flink·jar·oceanbase·cdc
小刘鸭!3 小时前
Hbase的特点、特性
大数据·数据库·hbase
凡人的AI工具箱3 小时前
每天40分玩转Django:Django表单集
开发语言·数据库·后端·python·缓存·django
奔跑草-3 小时前
【数据库】SQL应该如何针对数据倾斜问题进行优化
数据库·后端·sql·ubuntu
Elastic 中国社区官方博客3 小时前
如何通过 Kafka 将数据导入 Elasticsearch
大数据·数据库·分布式·elasticsearch·搜索引擎·kafka·全文检索
P.H. Infinity4 小时前
【Redis】配置序列化器
数据库·redis·缓存