Spring Boot框架下的一个简单的接口开发

目录

[一.Spring Boot后端框架](#一.Spring Boot后端框架)

二.pom.xml配置文件

[三.Maven 的工作方式](#三.Maven 的工作方式)

四.实体层(Entity)

五.控制层(Controller)

六.数据访问层(Mapper)

七.业务层(Service)

八.全流程


一.Spring Boot后端框架

1.建立实体类,跟数据库表字段保持一致

2.建立mapper接口,定义要操作数据库的动作

3.建立mapper的xml文件,写具体的sql语句

4.建立service类,处理业务逻辑

5.在controller类中展示处理的结果

浏览器请求 /abcd

→ Controller.getUser() 调用

→ Service.findAll() 调用

→ Mapper.findAll() 执行 SQL

→ 数据库返回结果

← Mapper 返回 List

← Service 返回 List

← Controller 返回 JSON

← 浏览器收到数据

二.pom.xml配置文件

pom.xml放置着各种依赖,有了依赖才能运用 比如说redis,mysql,mybaits都必须添加,可以在刚创建项目时候勾选对应的依赖,也可以创建项目之后,去官网上找到对应依赖,进行手动添加。添加完后要通过Maven更新

复制代码
<dependency>
    <groupId>com.mysql</groupId>        <!-- 谁写的 -->
    <artifactId>mysql-connector-j</artifactId>  <!-- 叫什么 -->
    <scope>runtime</scope>              <!-- 什么时候用 -->
</dependency>

三.Maven 的工作方式

你在 pom.xml 里声明"我要用这个库",Maven 会自动去网上(Maven 仓库)帮你下载,你不用手动去网上找 jar 包。就像你在购物清单上写"要一箱砖头",Maven 就是那个帮你去建材市场买回来的人。

这里是各个maven的jar包 也就是依赖

四.实体层(Entity)

这里是对应了你的数据库表里的各个数据,你要用表里的数据 必须全部都写下来

五.控制层(Controller)

  • 职责:接收 HTTP 请求,返回响应

  • 关键注解:@RestController@RequestMapping

  • 我的代码:Usercontroller.java --- 处理 /abc/abcd 请求

@RestController:注解:标记这个类是 REST 控制器,能接收 HTTP 请求并返回 JSON 数据

@Autowired:注解 :让 Spring 自动把 Userservice 对象注入进来,不用自己 new

private Userservice userservice:声明私有成员变量 userservice,类型是 Userservice(业务逻辑层)

@RequestMapping("/abc"):注解 :定义接口路径,访问 http://localhost:8080/abc 会执行这个方法

路径 数据来源 用途
/abc 代码里硬编码(第17-22行手动 set) 测试用,返回固定数据
/abcd 调用 userservice.findAll() 查数据库 实际业务,返回数据库里的所有用户

@Autowired + userservice.findAll() 就是 Spring Boot 分层架构的体现:Controller 不直接操作数据库,而是交给 Service 层去处理。

六.数据访问层(Mapper)

  • 职责:与数据库交互,执行 SQL

  • 关键注解:@Mapper@MapperScan

  • 你的项目:UserMapper.java + blog_platform.xml --- MyBatis 映射 SQL

在Mapper里定义了一个接口 UserMapper ,只定义了"要查什么";真正的 SQL 在 blog_platform.xml 里。MyBatis 会在运行时自动实现这个接口,把方法调用转成 SQL 执行。

接下来我们看resource/mapper 这是实现了那个接口

namespace是映射就是那个usermapper的路径

id就是mapper接口中实现的方法findAll()

resultType存放的是映射的数据库表这个实体包位置

然后写入sql的语句

resource包下面的另一个文件 yml配置的是与数据库的连接

七.业务层(Service)

  • 职责:核心业务处理、事务管理

  • 关键注解:@Service

  • 你的项目:Userservice.java --- 调用 Mapper 查询数据

接收 Controller 的请求(比如查所有用户)

调用 Mapper 执行数据库操作(userMapper.findAll()

处理业务逻辑(比如过滤、计算、校验等)

返回结果给 Controller

行号 代码 含义
1 package org.example.demo3.Service; 包声明,属于 Service 层
9 @Service 注解:标记这个类是 Spring 的 Service 组件,会被自动扫描并创建 Bean
10 public class Userservice { 定义公开类 Userservice
11 @Autowired 注解 :自动注入 UserMapper 对象,不用自己 new
12 private UserMapper userMapper; 声明私有成员变量 userMapper,类型是 UserMapper(Mapper 接口)
13 public List<blog_platform> findAll(){ 定义公开方法,返回 blog_platform 列表
13 return userMapper.findAll(); 调用 Mapper 的 findAll() 方法,把结果返回给上层

八.全流程

Controller 控制层

复制代码
@RestController                    // ① 标记为控制器,返回 JSON
public class Usercontroller {
    @Autowired                     // ② 自动注入 Service
    private Userservice userservice;

    @RequestMapping("/abc")         // ③ 路径 /abc
    public blog_platform getName(){
        blog_platform bp = new blog_platform();  // ④ 创建对象
        bp.setId(1);                // ⑤ 手动塞数据(测试用)
        bp.setUsername("TOM");
        bp.setAge(18);
        bp.setName("张三");
        bp.setGender("男");
        return bp;                  // ⑥ 返回对象 → 自动转 JSON
    }

    @RequestMapping("/abcd")       // ⑦ 路径 /abcd
    public List<blog_platform> getUser(){
        return userservice.findAll();  // ⑧ 调用 Service 查数据库
    }
}

Service 业务层

复制代码
@Service                          // ① 标记为业务组件
public class Userservice {
    @Autowired                    // ② 自动注入 Mapper
    private UserMapper userMapper;

    public List<blog_platform> findAll(){
        return userMapper.findAll();  // ③ 调用 Mapper 执行 SQL
    }
}

Mapper 数据访问层

复制代码
@Mapper                           // ① 标记为 MyBatis 接口
public interface UserMapper {     // ② 注意是 interface,不是 class
    List<blog_platform> findAll();  // ③ 只写方法名,SQL 在 XML 里
}

配套的 blog_platform.xml

复制代码
<mapper namespace="org.example.demo3.Mapper.UserMapper">
    <select id="findAll" resultType="org.example.demo3.Entity.blog_platform">
        SELECT * FROM user          <!-- 真正的 SQL 在这里 -->
    </select>
</mapper>

三层对比

Controller Service Mapper
注解 @RestController @Service @Mapper
类型 class class interface
注入谁 注入 Service 注入 Mapper (不需要注入)
职责 接收请求、返回响应 业务逻辑 定义数据库操作
写 SQL 吗 不写 不写 接口不写,XML 里写
返回给谁 返给浏览器 返给 Controller 返给 Service
相关推荐
wear工程师8 小时前
CompletableFuture 的 allOf 到底怎么收结果?面试别只说并行
java·后端
b130538100498 小时前
DiaryDetail2Page 卡片式详情:琥珀渐变 + 引号装饰
后端
倒流时光三十年8 小时前
Logback 系列(3):三大核心组件 Logger / Appender / Encoder
java·开发语言·logback
什巳8 小时前
JAVA练习312- 二叉搜索树中第 K 小的元素
java·数据结构·算法·leetcode
倒流时光三十年9 小时前
Logback 系列(7):常用 Appender(控制台 / 文件 / 滚动文件)
java·前端·logback
w139548564229 小时前
AI 周报卡片:智能生成内容的 UI 呈现
后端
全堆鸿蒙9 小时前
天气药丸标签:Row + Text 组合实现品牌药丸
后端
HONG````9 小时前
HarmonyOS ArkUI Slider 与 Rating 实战:音量控制、亮度调节与星级评分
后端
极客先躯9 小时前
高级java每日一道面试题-2026年04月18日-实战篇[Docker]-如何处理金融行业的时序数据容器化?
java·运维·docker·容器·金融·时序数据·高级面试
hdsoft_huge9 小时前
SpringBoot系列18:SpringSecurity登录鉴权,JWT无状态Token认证完整流程(生产级落地)
java·spring boot·后端