Spring Boot 入门
介绍
本项目将使用Spring Boot作为基础, 使用MySQL作为本地数据库, 使用Spring Data JPA访问数据库.
初始化项目
Project
指项目的管理工具, 本项目选择Maven
Language
既是项目使用的语言, 本项目将使用Java
Spring Boot
指使用的Spring Boot版本, 本项目选择2.4.5
Project Metadata
指项目的基础结构命名, 本项目中Artifact
项为springboot-start
,Name
项也为spring-boot-start
, 其余项都为默认值Package
指项目的打包格式, 建议选择Jar
Java
指项目使用的Java版本, 请根据自己安装的Java版本选择Dependencies
指项目用到的依赖, 点击ADD DEPENDENCIES
可添加依赖, 本项目将用到Spring Web
,MySQL Driver
,Spring Data JPA
,Thymeleaf
,Validation
设置好后应该会类似下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KSDHuMi8-1620558242033)(https://i.loli.net/2021/05/09/k32ZPzlDeiKdYfq.png)]
接着点击GENERATE
或是按下Ctrl + Enter
导出项目的压缩包, 下载解压后在IntelliJ中通过File - Open...
选中解压后的文件再点击Ok
即可
Code
配置数据库
首先在src/main/resources/application.properties
中配置MySQL数据库数据源
spring.datasource.url= jdbc:mysql://localhost:3306/dbname
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
其中url
项最后的dbname
请填写你数据库Schema名称, username
一般为root
接着配置JPA
spring.jpa.hibernate.ddl-auto= update
spring.jpa.hibernate.show-sql= true
spring.jpa.hibernate.properties.hibernate.format= sql=true
其中ddl-auto=update
意味着第一次加载时会根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载时根据model类自动更新表结构. 而show-sql=true
意味着hibernate执行的所以sql操作都会显示出来. 最后format= sql=true
设置了hibernate中的sql语句格式为原生格式
Person
在配置好数据库后, 接着在src/main/resources
中新建一个Package命名为model用来存储实体, 在该包中创建一个Person
类. 首先为Person
类添加两个类级注解@Entity(name = "Person")
, 它意味着Spring容器将会为Person
类创建对应的数据库表, 其中name
属性定义了在Spring容器中的标识, 我们之后会用到; @Table(name = "person")
注解的name
属性定义了数据库中的表名
@Entity(name = "Person")
@Table(name = "person")
public class Person {
}
然后, 开始定义Person
类的属性, 分别是Long
型的id
和String
型的name
. 为id
添加@Id
注解, 意味着它是数据库中该表的主键, 类似SQL中的PRIMARY KEY
, 再为它添加@GeneratedValue(strategy = GenerationType.AUTO)
, 表示id
的值将会自动生成. 最后为name
添加@NotNull
, 意味着该值非空, 类似SQL中的NOT NULL
.
@Entity(name = "Person")
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String name;
}
最后为Person
类添加一个protected
的空构造器(用于JPA), 以及一个完整的构造器(由于id
将会自动生成, 故只用初始化name
), 一个toString
方法, 同时为id
和name
添加对应的getter方法
@Entity(name = "Person")
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;