Spring Boot+JPA+Mysql-简单查询--增删改查
发布日期:2021-06-28 20:53:56
浏览次数:2
分类:技术文章
本文共 4288 字,大约阅读时间需要 14 分钟。
java web开发一般包括web层(controller,控制数据的接受请求和返回响应),service层(业务逻辑层),数据库操作层.
JavaWeb经典三层框架
我们常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的! 所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。 * WEB层:包含JSP和Servlet等与WEB相关的内容; * 业务层:业务层中不包含JavaWeb API,它只关心业务逻辑; * 数据层:封装了对数据库的访问细节,该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。 Web层依赖业务层,业务层依赖数据层,数据层操作数据! 注意: 在业务层中不能出现JavaWeb API,例如request、response等。也就是说,业务层代码是可重用的, 甚至可以应用到非Web环境中。业务层的每个方法可以理解成一个万能,例如转账业务方法。注解:
@Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
1.完成实体对象(Book)的配置
package com.lrm.domain;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class Book { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String name; private String author; private int status; private String description; public Book() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public long getId() { return id; } public void setId(long id) { this.id = id; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; }}
2.配置数据操作层
新建一个接口,继承 JpaRepository 接口,后就可以具备JPA数据操作功能
import org.springframework.data.jpa.repository.JpaRepository;public interface BookRepository extends JpaRepository{}
3.定业务层(Service)
为了让controller可以注入BookService使用注解@Service
import com.lrm.domain.Book;import com.lrm.domain.BookRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class BookService { @Autowired //@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注, // 完成自动装配的工作。 // 通过 @Autowired的使用来消除 set ,get方法。 private BookRepository bookRepository; /** * 查询所有的书单列表 * @return */ public ListfindAll() { return bookRepository.findAll(); } /** * 提交一个书单信息 * @param book * @return */ public Book save(Book book) { return bookRepository.save(book); } /** * 获取一条书单信息 * @param id * @return */ public Book findOne(Long id) { //return bookRepository.findOne(id);//2.0.0.以上版本 return bookRepository.findById(id).get();//2.0.0.以下版本 } /** * 删除一条书单信息 * @param id */ public void delete(long id) { bookRepository.deleteById(id) ;//2.0.0.以上版本 // bookRepository.delete(id);//2.0.0.以下版本 }}
4.web层(controller,控制数据的接受请求和返回响应)
读取数据
添加数据
更新数据
以下两种方法都可以:
方法一:
/** * 更新一个书单 * @param id * @param name * @param author * @param description * @param status * @return */ @PutMapping("/books") public Book update(@RequestParam long id, @RequestParam String name, @RequestParam String author, @RequestParam String description, @RequestParam int status) { Book book = new Book(); book.setId(id); book.setName(name); book.setAuthor(author); book.setDescription(description); book.setStatus(status); return bookService.save(book); }
方法二:
/** * 更新一个书单 * @param id * @param name * @param author * @param description * @param status * @return */ @PutMapping("/books") public Book update(Book book) { return bookService.save(book); }
删除数据
/** * 删除一个书单 * @param id */ @DeleteMapping("/books/{id}") public void deleteOne(@PathVariable long id) { bookService.delete(id); }
源码链接:
链接:https://pan.baidu.com/s/15O5ZefBWxP-RWyZwtOXtmA
提取码:pbt4转载地址:https://blog.csdn.net/yangshengwei230612/article/details/103732393 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月06日 17时41分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
面试中并发类问题的准备和学习
2019-04-29
2018 Java 后端工程师的书单推荐
2019-04-29
使用IPVS实现Kubernetes入口流量负载均衡
2019-04-29
ETCD原理详细解析
2019-04-29
Docker 快速删除所有容器
2019-04-29
分布式锁的实现方式
2019-04-29
JVM性能监控工具-Jvisualvm
2019-04-29
JMX超详细解读
2019-04-29
Java泛型详解
2019-04-29
Hadoop集群hdfs添加磁盘操作
2019-04-29
【运维篇】HDFS磁盘选择策略详解
2019-04-29
macOs 静默安装dmg文件
2019-04-29
linux 命令学习 ls
2019-04-29
时间管理
2019-04-29
重识SQLHelper
2019-04-29
安卓开发快速上手!我的Android美团求职之路,安卓系列学习进阶视频
2019-04-29
安卓开发招聘!免费Android高级工程师学习资源,2年以上经验必看
2019-04-29