SpringBoot实现简单的增删改查(CURD)
原文链接:SpringBoot实现简单的增删改查(CURD) – 每天进步一点点 (longkui.site)
前面一篇文章介绍了SpringBoot项目的创建: Spring Boot(1)—创建并运行项目
这篇文章简单介绍一下SpringBoot项目的增删改查。
所需工具:IDEA、java1.8、mysql
0.创建项目
我们通过IDEA创建项目。
点击”新建”—>”项目”
选择“Spring Initializr” 选择版本号1.8,然后点击“下一步”
然后填写必要信息。类型这个地方选择Maven(Generate a Maven based project archive),语言选择java,java版本我们这里选择8。其余信息自定义。
然后选择“web”,选择“Spring web”然后选择Spring Boot的版本号,这里线不建议选择3.0及以上版本,我们选择的是2.7.7,然后点击“下一步”。
然后点击“完成”
如果出现下面这样,表示正常
如果出现下面这样图,不正常,可以参考下面的两篇文章进行解决
参考解决办法:
Project ‘org.springframework.boot:spring-boot-starter-parent:2.7.7’ not found
1.添加必要依赖
因为要实现增删改查,所以要添加一些依赖,比如数据库等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>site.longkui</groupId> <artifactId>app</artifactId> <version>0.0.1-SNAPSHOT</version> <name>app</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
2.创建数据库
参考下面这篇文章创建数据库表: mysql生成数据
3.创建或修改配置文件
我们创建的springboot项目一般只有application.properties文件,如果没有xxx.yml文件,我们需要自己创建这个文件。
在这里,我们创建application.yml文件(或者也同步创建application-dev.yml文件,关于这两个文件的区别和优先级可以参考这篇文章:)
spring boot的application.yml和application-dev.yml
创建的application.yml内容参考如下:
我们参考上面图片新建五个文件夹,controller、entity、mapper、service、mappers。注意各自的位置,我们扫描包的时候需要用到位置。
这个地方主要说明的是
1.mysql的相关部分:
自己参考上面的脚本创建数据库和表,数据库连接和用户名密码等不要写错了。
2.mybatis的配置部分:
mapper-locations主要表示要映射的xml文件。按照上面的图片的配置文件,mapper-locations可以写成classpath*:mappers/*Mapper.xml这个地市之所以写成classpath*:mappers/**/*Mapper.xml这样主要是为了以后扩展,包括下面的type-aliases-package也是这个想法。
4.编写xml和mapper层
我们创建访问数据库的增删改查的xml文件,注意要在resources/mappers下面创建,而且创建的文件名称一定要是 xxxMapper.xml。这是因为我们配置文件定义的这种格式,如果你写的xml文件命名为abc.xml,根据上面的配置,spring就无法扫描到这个文件,也就不能执行这个文件中的sql。
(注:为了方(tou)便(lan),我们不创建实体类,不写resultMap,直接用数据库字段一一对应)
我们创建的xml文件参考如下
然后Mapper层如下:
5.service层
这个地方需要说明一下,本来这个层级关系一般是sevice层,然后写service的实现层(impl),在实现层里去访问Mapper层的代码,但是这个demo没有太复杂的逻辑,所以偷懒了一下,直接在service层去访问Mapper层的代码。
6.controller层
需要说明的是,
- getList这个方法的返回值类型
List<HashMap<HashMap,HashMap>>
一般来说,我们都会用实体类来接受返回的数据,但是,本文这里又偷懒了,没有写实体类对应,直接用比较万能的方式接收返回的数据,实际开发中并不建议这样用。
2. 非常明显的可以看出,这里的增删改查操作都是用的get方法,实际开发中一般是不允许这么干的,一般来说,只有查询数据的时候用get方法,其余的用POST和PUT,本文只是为了偷懒,测试方便所以用的全都是get方法。
7.修改启动类
我们找到启动类的位置,加上MapperScan
8.测试增删改查
如果出现了:Whitelabel Error Page 报500,可以参考下面这篇文章尝试一下:
1.查询所有数据:
URL:http://localhost:8082/students/getList
2.删除一个学生数据:
URL:http://localhost:8082/students/del/1000
然后去数据库里查看,确实没有了编号是1000的学生信息了。
3.新增一个学生:
URL: http://localhost:8080/studets/add/王老虎/男/5/19
这里没有用API工具,因为这样传中文会有问题,我们用浏览器代替
上面这个请求就会转换成:http://localhost:8082/students/add/%E7%8E%8B%E8%80%81%E8%99%8E/%E7%94%B7/5/19
然后,数据库里也正常有数据了
4.更新一个学生
我们把王老虎的性别改成女
URL: http://localhost:8080/studets/update/1005/王老虎/女/5/19
浏览器会转换成:
http://localhost:8082/students/update/1005/%E7%8E%8B%E8%80%81%E8%99%8E/%E5%A5%B3/5/19
然后去数据库里查询,发现王老虎的性别已经被修改了。
9.总结
本来觉得原理都懂,手搓一遍应该很简单,但是做和说是两码事,真正试一试就能看出很多小问题了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具