spring boot后端

新建spring boot项目

notion image
generate后解压,在idea中打开pom.xml文件,记得open as project
notion image
  • java放java代码
  • resources放静态文件
  • appliication.properties配置文件
  • pom.xml配置依赖
notion image
  • 手动更新maven
  • 配置好java版本等
 
后端和数据库连接
notion image
在一个后端项目中,尤其是基于Spring Boot等框架的项目中,常见的目录结构通常包括commonconfigcontrollerentityfiltermapperserviceutil等包。它们各自承担着不同的职责和功能。以下是它们的基本作用和意义:

1. common(公共部分)

  • 作用common包通常用于存放项目中多个模块共享的工具类、常量、异常处理、日志等公共代码。
  • 内容
    • 公共常量类(例如:public static final常量)。
    • 公共工具类(例如:字符串处理、日期格式化等)。
    • 自定义的异常类。
    • 项目通用的响应结果封装(如:统一返回的Response类)。
  • 示例
    • Result.java:用于封装所有API的返回结果(包括状态码、消息、数据等)。
    • Constants.java:存放项目中的常量。

2. config(配置类)

  • 作用config包用于存放项目的各种配置类,通常包括数据库配置、缓存配置、安全配置等。
  • 内容
    • 数据源配置(如:MySQL、Redis、MongoDB等)。
    • Spring Security配置(权限控制相关)。
    • 其他第三方服务的配置(如:邮件、短信、文件上传等)。
    • 项目全局的配置类(如:跨域配置、全局异常处理等)。
  • 示例
    • DatabaseConfig.java:数据库连接池的配置类。
    • SecurityConfig.java:Spring Security的配置类,定义认证与授权的规则。

3. controller(控制器层)

  • 作用controller包用于处理前端的HTTP请求,接受用户输入并返回响应。它充当了请求和业务逻辑之间的桥梁。
  • 内容
    • 接受用户请求的API接口方法。
    • 调用service层进行业务处理。
    • 返回service层的结果给前端。
  • 示例
    • ResidentController.java:处理与Resident相关的请求,例如查询居民信息、添加居民等。

4. entity(实体类)

  • 作用entity包用于存放数据库表的映射类(也称为实体类)。它与数据库中的表结构一一对应,通过JPA或MyBatis框架进行持久化操作。
  • 内容
    • 每个数据库表通常有一个对应的实体类。
    • 实体类包含字段、getter/setter方法和映射注解。
  • 示例
    • Resident.java:对应数据库中的resident表,包含idnamebirthDate等字段。

5. filter(过滤器)

  • 作用filter包用于存放自定义的过滤器,通常用于对HTTP请求进行预处理或者后处理。过滤器在请求到达controller之前或响应返回前执行。
  • 内容
    • 用于身份验证、请求日志、跨域处理等功能。
    • 常见的如:日志过滤器、请求限流、权限过滤器等。
  • 示例
    • LoggingFilter.java:记录每个请求的日志。
    • AuthenticationFilter.java:用于验证用户的身份信息。

6. mapper(数据访问层)

  • 作用mapper包通常用于存放与数据库交互的接口类(MyBatis)或者JPA的Repository接口类。它们定义了如何与数据库进行操作(如增删改查)。
  • 内容
    • MyBatis中,Mapper接口和XML文件存放查询SQL。
    • JPA中,Repository接口提供CRUD操作。
  • 示例
    • ResidentMapper.java:MyBatis的Mapper接口,定义了查询居民数据的SQL方法。
    • ResidentRepository.java:Spring Data JPA的Repository接口,提供对Resident实体类的数据库操作。

7. service(服务层)

  • 作用service包用于存放业务逻辑层代码。service层调用mapper层处理具体的数据库操作,并对业务逻辑进行处理后返回结果给controller
  • 内容
    • 业务逻辑处理(例如:数据验证、数据计算、调用外部服务等)。
    • 调用mapper层执行数据库操作。
  • 示例
    • ResidentService.java:业务服务类,处理居民数据相关的业务逻辑,如添加、删除居民等。

8. util(工具类)

  • 作用util包用于存放一些通用的工具类,通常是实现特定功能的静态方法,方便在项目中多次调用。
  • 内容
    • 通用的功能方法(如:文件操作、日期处理、加密解密等)。
    • 辅助性的工具方法。
  • 示例
    • DateUtil.java:用于处理日期格式转换的工具类。
    • FileUtil.java:用于文件操作的工具类。

项目中各部分的关系:

  • Controller:负责接收前端请求并调用Service层进行业务处理。
  • Service:处理业务逻辑,调用Mapper层进行数据库操作,返回处理结果。
  • Mapper:负责数据库的增删改查操作,调用Entity类来映射数据库表。
  • Entity:与数据库表一一映射的类。
  • Config:存放项目的配置类。
  • Filter:自定义的请求过滤器,通常在请求前后进行处理。
  • Common:存放项目的公共部分,如常量、工具类、异常等。
  • Util:常见的辅助工具类,用于简化代码的编写。

实体类

数据库 (BIGINT)
Java
Python
JavaScript (Node.js)
Go
BIGINT (biglong)
Long
int(Python3 中 int 可自动扩展)
BigInt(ES6+)或 String
int64
VARCHAR(n)
String
str
STRING(Sequelize)或 string(TypeScript)
string
tinyint
boolean
BooleanField
BOOLEAN / TINYINT(1)
bool
DATE
java.time.LocalDate(Java 8+)或 java.sql.Date(旧版)
datetime.date
DataTypes.DATEONLY(Sequelize)或 Date(TypeORM)
time.Time(使用 gorm:"type:date"
@Enumerated(EnumType.STRING)
  • 指定枚举的存储方式,存储为字符串(如 "male""female")。
  • 如果不加这个注解,默认是存整数索引,如 0(代表 MALE)、1(代表 FEMALE)。
  • 推荐使用 EnumType.STRING,避免索引变动导致数据错乱。

1. 定义实体类

实体类通常用@Entity注解标记,表示该类是一个JPA实体类,并且将与数据库中的表进行映射。

2. 指定表名

使用@Table注解来指定该实体类映射到数据库中的表名。

3. 定义主键

主键字段需要用@Id注解标记,@GeneratedValue用于指定主键的生成策略。

4. 定义属性与列的映射

每个字段通常使用@Column注解里面要与数据库对应。可以指定列名、是否为空、默认值等。
@Column(name="medical_insurance")

5. 处理日期类型

使用@Temporal注解来标记日期字段,指定数据库中存储的类型(DATETIMETIMESTAMP)。

6. 处理枚举类型

对于枚举类型,使用@Enumerated注解来指定映射方式,可以选择存储为StringEnumType.STRING)或者intEnumType.ORDINAL)。

7. 定义无参构造方法

JPA要求实体类必须有一个无参构造方法,通常这个构造方法可以是public的,也可以是protected的。

8. 添加Getter和Setter方法

为了让JPA可以访问和修改实体类的属性,需要提供Getter和Setter方法。
实例
 
notion image

接收前端信息

在controller中添加该注解 @CrossOrigin(origins = "*")
 

项目运行

notion image
 
Prev
数据库
Next
前端
Loading...
Article List
一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++