使用JPA实现MySQL数据库基本CRUD操作
1. 新建项目
![](https://img.haomeiwen.com/i15631222/fe0ae73078be8bf0.png)
![](https://img.haomeiwen.com/i15631222/f962de25e41b9731.png)
![](https://img.haomeiwen.com/i15631222/a224ff36a8140754.png)
选择Web->Web,SQL->JPA&MySQL这三种组件
![](https://img.haomeiwen.com/i15631222/2328e871cb403362.png)
![](https://img.haomeiwen.com/i15631222/7e963b2c6f594f00.png)
2. pom.xml
项目中自动添加了spring-data-jpa、mysql-connector-java的支持。
注意使用内部tomcat运行程序,要将spring-boot-starter-tomcat的scope标签注释掉。
3. 配置数据源以及JPA
新建application.yml文件,配置数据库连接信息以及JPA
![](https://img.haomeiwen.com/i15631222/8cf572bb12095b75.png)
需要注意yml配置文件的写法,下面提我遇到的几点:
1.标签与内容之间有空格。例如“url:”与后面的连接字符串之间是有空格的,“url:”显示蓝色即为正确
2.要注意每一项配置的引用关系。例如要输入username时,智能提示了很多选项,而我要用的是spring.datasource下的username,选择第一个符合的配置。
![](https://img.haomeiwen.com/i15631222/333615b26bc52e53.png)
3.SpringBoot的版本不同,写法可能有变化,我用的是2.1.1
一开始按照网上的方法写了yml配置文件,后来程序运行时出现WARN,查找解决方案更改至上面图片中的写法
出现告警的有时间(serverTimezone=UTC),新版本写法改变(driver-class-name: com.mysql.jdbc.Driver),以及open-in-view的设置。
有些告警可能并不影响功能,但我觉得作为一个初学者,尽可能解决一些提示出来的告警,也是一种积累。
4. CRUD
1.我的本地数据库表结构
![](https://img.haomeiwen.com/i15631222/3e77619f102a56e4.png)
2.创建实体
get-set对可以鼠标右键->Generate->Getter and Setter,所有属性全选,就自动生成了。
这部分需要注意,上图中可以见到,我创建的表、字段都是包含大小写的形式,但在代码中,统一写成小写,不会出错。
之前Table&Column完全按照数据库的大小写来填写,报错找不到表或字段(例如报错java.sql.SQLSyntaxErrorException: Table 'workspace.group_info' doesn't exist),Hibernate将GroupInfo解析成了group_info,导致找不到该表,具体原因未明。
![](https://img.haomeiwen.com/i15631222/a38be7eb886e7cb7.png)
3.创建JPA
![](https://img.haomeiwen.com/i15631222/27c972278c5b8abd.png)
4.编写Controller,编写数据库查询、添加、更新、删除的方法
![](https://img.haomeiwen.com/i15631222/b928405488c334bc.png)
5.项目整体结构如图:
![](https://img.haomeiwen.com/i15631222/b84c30e1c0ae1f80.png)
5.运行测试
首先,运行信息没有错误、没有告警
1.查询测试:127.0.0.1:8080/user/list
2.添加测试:127.0.0.1:8080/user/save?groupName=workspace
添加执行url并没有写groupID的值,原因是实体类中@GeneratedValue(strategy = GenerationType.IDENTITY),主键设置为自增长
3.更新测试:127.0.0.1:8080/user/save?groupID=2&groupName=utility
4.删除测试:127.0.0.1:8080/user/delete?id=1