一、SpringBoot的优点:
1.快速构建一个独立的 Spring 应用程序,简化开发的Web应用。
2.嵌入的 Tomcat、Jetty 或者 Undertow,无须部署 WAR文件,内嵌了web服务器(前三个都是web服务器),不用war包,放到对应的服务器中,只需要一个jar包就行,通过java来启动就行。
3.提供starter POMs来简化Maven配置和减少版本冲突所带来的问题,相当于是依赖,简化了很多的依赖,并且还帮助我们管理了很多的版本号,减少冲突。
4.对Spring和第三方库提供默认配置(约定大于配置),也可修改默认值,简化框架配置。
5.无需配置XML--JavaConfig,无代码生成,开箱即用,通过存注解的方式来解决。
二、项目的结构解释
前端各种的设计代码之类的
↑ ↓
控制层:@RestController @Controller
用来给前端提供接口的相关操作方式
↑ ↓
业务层:@Service
用来写主要的逻辑,各种各样的逻辑代码
↑ ↓
数据访问层:@Repository
顾名思义,和MySQL进行交互操作,用来拿数据的相关操作,通过SpringDataJPA方式来实现。
↑ ↓
MyAQL数据库
三、前置的知识要求
1.熟练使用Maven进行项目构建和依赖管理
2.熟练使用idea
3.SpringBoot 3.1.5需要Java17,还需要Spring Framework 6.x版本
四、SpringBoot项目的一个大体的代码文件结构
src
main
java:书写运行时的java代码文件
controller:控制层的文件
service:服务层
repository:数据访问层
pojo 类 里面放置要生成的数据文件
xxxApplocation.java:SpringBoot项目的入口类文件(有且只有一个)
resources:书写运行时使用的配置文件
application.yml application.properties核心配置文件,必须在根目录中
test
java:书写测试时的java代码文件
resources:书写测试时使用配置文件
五、配置文件中的各种解释说明
sercer.port=8080 当web应用端口,默认是8080
spring.datasource.url=xxxxxxxx 数据库的地址
spring.datasource.username=root 用户名
spring.datasource.password=123456 密码
spring.datasource.driver-class-name=xxxxxxx 数据可的驱动
spring.jpa.show-sql=true 显示sql
这个属性设置后,Spring 将显示所有执行到数据库的 SQL 语句。这对于调试非常有用,因为它可以帮助开发者理解应用程序生成的 SQL 语句,并检查其是否如预期那样工作。 开发者通常在开发阶段开启这个设置,但在生产环境中关闭它以提高性能。
spring.jpa.properties.hibernate.format_sql=true 格式化
这个属性设置后,Hibernate 将格式化输出的 SQL 语句,使其更易于阅读。格式化的 SQL 语句会有缩进,并且会使用标准的 SQL 语法,而不是使用缩写或特定于数据库的语法。 和 spring.jpa.show-sql 一样,这个配置也主要用于开发环境。
spring.jpa.hibernate.ddl-auto=update 自动更新数据库表结构
这个属性用于控制 Hibernate 如何处理数据库模式(schema)。ddl-auto 是 "database change log" 的缩写。 update 的值意味着 Hibernate 会自动执行必要的DDL(数据定义语言)操作来更新或创建数据库模式,以匹配实体类的定义。如果数据库中不存在相应的表,它会创建表;如果表存在,它会更新表结构以匹配实体类的变化。 这个配置适用于开发环境,因为它可能会在每次运行应用程序时修改数据库结构,这在生产环境中可能会导致问题。
六、pojo中的java文件
@Table(name = "tb_user") 指定一个实体类映射到的数据库表的名字,如果不存在则会新建一个
@Entity 用于标识一个类是一个 JPA 实体,将这个类映射成了一个表
public class User{
//创建新的数据
@Id 主键的名
@GeneratedValue( strategy = GenerationType.IDENTITY )
用于指定主键的生成策略,即在实体被持久化到数据库时,如何生成主键值。
GenerationType.AUTO: 自动选择数据库支持的主键生成策略。
GenerationType.TABLE: 使用数据库的 IDENTITY 或 SERIAL 数据类型,这通常适用于 Oracle 和 SQL Server。
GenerationType.IDENTITY: 依赖于数据库的自动增长字段,这通常是 MySQL 和 PostgreSQL 的默认行为。
GenerationType.SEQUENCE: 使用数据库的序列生成主键值,这适用于支持序列的数据库,如 Oracle 和 PostgreSQL。
GenerationType.NATIVE: 根据底层数据库的能力自动选择 IDENTITY 或 SEQUENCE。
@Column(name="user_id")
将实体类中的字段(属性)映射到数据库表中的列
如果未指定 name 属性,JPA 默认将列的名称设置为与实体类中字段的名称相同,即使用驼峰式命名转换为下划线分隔的命名(例如,userAddress 会转换为 user_address)。
在某些情况下,数据库列的名称可能与实体类的字段名称不同,或者需要映射到不同的列,这时就需要使用 name 属性来指定正确的列名。
@Column 注解是一个非常有用的 JPA 注解,它允许开发者自定义实体属性映射到数据库列的属性。
name:指定数据库列的名称。如果不提供,则默认使用 Java 字段名(驼峰式命名转换为下划线分隔的命名)。
unique:指定列是否应该是唯一的。如果设置为 true,则该列将不允许有重复的值。
nullable:指定列是否可以为 null。如果设置为 false,则该列在数据库中不能为空。
updatable:指定列是否可以更新。如果设置为 false,则该列的值在实体更新时不会被更新。
insertable:指定列是否可以插入。如果设置为 false,则该列在实体插入时不会被插入。
length:指定字符串类型的列的最大长度。
precision 和 scale:对于数值类型,precision 指定了数字的总位数,而 scale 指定了小数点后的位数。
columnDefinition:允许指定自定义的 SQL 列定义。
table:指定该列所属的表,如果与实体中 @Table 注解指定的表不同时使用。
insertable 和 updatable:这两个属性分别控制列在插入和更新操作中的行为。
updatable 和 insertable:与 insertable 和 updatable 类似,控制列在插入和更新操作中的行为。
selected:如果设置为 false,则该列在 SELECT 查询中不会被包括。
Temporal:对于日期和时间类型的字段,指定如何将日期时间值转换为 SQL 类型。
TemporalType:与 Temporal 结合使用,指定具体的日期时间类型,如 TemporalType.DATE、TemporalType.TIME 或 TemporalType.TIMESTAMP。
private Integer userId;
private String username;
private String userword;
private String email;
//一个get和一个set
public Integer getUserId(){
return userId;
}
public void setUserId(Integer userId){
this.userId=userId;
}
.......
//生成toString方法
@Override
public String toString(){
return "User{" +
"userId=" + userId +
",username=' " + username + '\' ' +
",password=' " + password + '\ ' ' +
",email = ' " + email + ' \ ' ' +
' } ';
}
}