作者:躺在地球上的熊 | 来源:互联网 | 2024-10-31 21:03
在《SpringBoot实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握SpringBoot框架的应用开发技巧。
Spring boot (一) —— 简单的增删查改
本篇介绍如何使用spring boot 框架实现对数据的增删查改操作。这里先介绍一下我使用的工具。
编译器:IDEA
数据库:postgre
测试工具:postman
数据库工具:Navicat Premium 12
一、新建一个spring 项目
这是IDEA自带的Spring Assistant插件,假如你的IDEA没有,那就去下载一下,下载方法如下 点击右下角的configure,选择plugins,在Marketplace里面搜索Spring Assistant,找到后安装它。(假如你的网络不好,有可能搜不到东西,我就是被公司电脑坑惨了,如果这里实在不行,可以去IDEA的官网直接下载)
二、介绍一下spring项目的构成
新建完成后,你会看到类似这样的目录,然后我们就可以开始写我们的代码了。在写之前,我先介绍一下我们需要用到的文件
controller、dao、entity这三个文件夹是自己建的,这里我是将它分为三个层,关于这些分层,网上都有介绍和教学(默认都是这些名字),实际上我还是不够规范,没有将接口和实现分离,但是不影响。
Demo4Application是启动类,启动程序就是通过它,这里我们不需要改动它
application.properties和application.yml都是配置文件,一种是properties文件,另一种是yml文件,可以自己建的,我们推荐yml文件,因为它格式更好看[滑稽],当然选择其中一个,另一个文件要把它删了。
pom.xml是我们添加jar包时需要改动的
以上这些文件在网上都能查到介绍,有兴趣的可以去查查看
三、代码部分
我们先打开pom.xml 文件,首先添加依赖
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-web
org.postgresql
postgresql
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.data
spring-data-jpa
2.1.9.RELEASE
这些就是我这个项目所要用到的全部依赖,缺了哪些补哪些就可以了。
然后打开application.yml 文件,写上配置:
spring:
datasource:
driver-class-name: org.postgresql.Driver
username: postgres
password: 123456
url: jdbc:postgresql://localhost:5432/postgres2
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
temp:
use_jdbc_metadata_defaults: false
datasource:配置数据库;hibernate:直接照抄
数据库我用的是postgre的,用其他数据库(mysql等)的可以自行更换
username、password、url这些都是数据库的属性,网上有大把解释,我就不赘述了
接着就是功能逻辑的代码书写了,按照之前的分层,我们先写entity(实体类),entity里面放的就是数据库的表,比如我这里的UserInfo,在这个类中定义好表的所有字段,像Id、name等等。
@Entity
@Table(name = "user_info")
public class UserInfo {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name",nullable = false)
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
像@Entity、@Table、@Id这些注解都有各自的作用,建议读者自己一个个去搜索其含义和作用,看完之后就能理解这个entity类了。
然后来到UserRepository 这个接口,这是一个实现spring boot增删查改的最关键的一个接口,但同时它的写法也十分简单,因为很多方法它已经帮我们实现了。
public interface UserRepository extends JpaRepository, JpaSpecificationExecutor
{
List findUserInfoByName(String name);//按名字字段查询UserInfo信息
}
接口必须继承JpaRepository<实体类名,Id的类型>,JpaSpecificationExecutor<实体类名>。
这个findUserInfoByName方法是我们自行添加上去的,因为默认方法里面并不知道我们的实体类里有什么字段,所以需要我们自行根据需求去定义条件查询的参数类型。
最后便是Controller层的UserController ,这个类是前端和后台的枢纽,前端传参和后台调用具体方法便是在这个类中实现。
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
UserRepository userRepository;
//查
@GetMapping(value = "/query")
private List userInfoList(){
return userRepository.findAll();
}
//条件查询
@GetMapping(value = "/find")
private List findOne(@RequestParam("name")String name){
return userRepository.findUserInfoByName(name);
}
//增
@PostMapping(value = "/add")
private List addOne(@RequestParam("name")String name){
UserInfo user = new UserInfo();
user.setName(name);
userRepository.save(user);
return userRepository.findAll();
}
//改
@PutMapping(value = "/update")
private List updateOne(@RequestParam("id")Long id,@RequestParam("name")String name){
UserInfo user = userRepository.findById(id).get();
user.setName(name);
userRepository.save(user);
return userRepository.findAll();
}
//删
@DeleteMapping(value = "/delete")
private List deleteOne(@RequestParam("id")Long id){
userRepository.deleteById(id);
return userRepository.findAll();
}
}
同理,这些注解都有各自的作用,建议读者一个个去网上搜索阅读相关的知识。这里我简单介绍一下@RequestMapping()和@GetMapping()。我们从后缀名可以看出,这两个及下面的三个注解的作用有相似之处。其实它们value值就是这个接口的地址,我们随便打开一个网站并打开其中一些内容,可以看到网站地址上有/**,而value值便是这些东西。只不过RequestMapping和GettingMapping所属的层级不同,举个例子,假如你在网页上要调用查询接口,那么你需要输入的便是/user/query。
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping这四个注解对应着查增改删这四个接口类型,但实际上我们常用的一般是Get和Post这两个类型,改和删甚至查都可以用Post类型,一般来说没有参数传入的方法都用Get类型,有参数传入就用Post类型,这个还要看你参数是怎么获取的。
@RequestParam这个注解便是定义你通过表单获取这个参数,还有@RequestBody、@PathVariable等注解,分别有不同的应用场景,这是在开发中我们随时会用到的,读者可以去查询相关解释。(一般网页传的参数都是json数据,所以一般会用到RequsetBody,但是我们我们这里只是简单的测试这个增删查改功能,所以用RequestParam就够了)
在这些方法中可以看到实现简单的增删查改基本只要用到UserRepository里面的默认方法就可以实现,如save(),findAll()这些。
四、测试
在application.yml里面配置数据库前,我们要建一个数据库,数据库属性就是我们配置的东西。那么如何建立一个postgre数据库?这时就要用到我们的数据库工具Navicat Premium 12了。
建立数据库
点击PostgreSQL,新建一个数据库连接
连接名随便起
主机名即ip地址
端口号
初始数据库就写你所要建的数据库名即可
用户名和密码便是你所要配置的用户名密码
运行启动类
从控制台中我们可以看到这样一条信息,证明user_info表建立成功。
这样便算是启动成功了,可以开始我们的正式测试了。
使用postman工具进行测试
输入地址后send查询,发现查询结果为空,因为我们的数据库一条数据都没有,接下来我们来增添一条数据
因为我们在调用这个方法是设置的返回数据库中的所有数据,所以这里它就返回数据库中的数据了,我们也可以设置返回字符串类型,只返回一个“成功”。多添加几条数据再查询一下。
可以看到这次的结果不为空了,然后我们再来测试一下条件查询、改和删。
可以看到,我们都已成功地对数据库中的表user_info进行增删查改操作。
五、总结
总的来说,增删查改只是spring boot中入门级的操作,同时也是最重要的操作之一,因为基本上所有的网页都离不开对数据库的增删查改操作。笔者在写这个demo的时候也出现了不少bug(笔者也是刚学不久),很多bug都是一些十分常见的问题,都可以在网上搜到解决方法,而且debug的过程也是你提升较快的一个过程,不要畏惧bug。
因为是我也是刚学,有一些东西自己深有体会,但却不知道怎么用言语来表达,这里也十分遗憾不能够把我理解的东西完整地告诉你们,在后面我也会慢慢写下去,榨干自己。
最后讲一下我目前对spring boot的掌握情况(入门级),学了增删查改之后就继续学了联表查询,联表查询做一个权限管理的例子,其实相当于增删查改的进阶版,做到联表的增删查改。然后就学分页查询,分页查询是一个比较基础且重要的东西,基本只要跟表有关都会用到。再然后就看了一点spring缓存的东西,这是优化方面的东西。
其实笔者学这个的东西是因为带着任务学的,所以目的性比较强,相应的就不够系统,这些文章也是来记录一下自己的学习情况罢了,希望对你们有所帮助。