当前位置: 首页 > article >正文

从零开始:Spring Boot + MyBatis 搭建后端接口完整教程

前言你是否刚接触 Spring Boot面对一堆配置不知从何下手是否看了很多教程却还是搞不清 Controller、Service、Mapper 到底谁先谁后本文带你从零开始手把手搭建一个完整的 Spring Boot MyBatis 项目。不绕弯子不堆砌代码只讲最核心的一个查询接口。从创建项目、配置数据库、到编写每一层代码最后成功返回 JSON 数据每一步都有清晰的代码和通俗的解释。读完本文你将彻底理解 Spring Boot 的四层架构并能独立开发一个完整的数据查询接口。Spring Boot MyBatis 开发接口步骤详解第一步创建项目名称按需填写建议英文名称类型一定要选择MavenJDK选择17Java这里选择17依赖添加图中四个基础的依赖都可以直接搜索添加第二步手动创建基础项目结构springboot-demo/ ├── src/main/java/com/example/demo/ │ ├── DemoApplication.java # 启动类 │ ├── controller/ │ │ └── UserController.java # 控制器 │ ├── service/ │ │ ├── UserService.java # 服务接口 │ │ └── impl/ │ │ └── UserServiceImpl.java # 服务实现 │ ├── mapper/ │ │ └── UserMapper.java # 数据访问接口 │ └── entity/ │ └── User.java # 实体类 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ └── mapper/ │ └── UserMapper.xml # SQL映射文件 └── pom.xml # 依赖配置第三步写配置文件位置resources/application.ymlspring: datasource: url: jdbc:mysql://localhost:3306/test_db?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf-8 username: 你的数据库账号 password: 你的数据库密码 mybatis: mapper-locations: classpath:mapper/*.xml解释配置数据库连接和 MyBatis 设置。url中的“test_db”是你的数据库表名还需要设置你的数据库账号密码第四步创建数据库表-- 1. 创建数据库 CREATE DATABASE IF NOT EXISTS test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. 使用数据库 USE test_db; -- 3. 创建用户表 CREATE TABLE IF NOT EXISTS user ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT 用户ID, name VARCHAR(50) NOT NULL COMMENT 用户名, age INT COMMENT 年龄, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表; -- 4. 插入模拟数据 INSERT INTO user (name, age) VALUES (张三, 25), (李四, 30);第五步创建实体类EntityData public class User { private Long id; // 用户ID private String name; // 用户名 private Integer age; // 年龄 }解释实体类对应数据库的一张表。类名对应表名属性对应表的字段。比如 User 类对应 user 表name 属性对应 name 字段。添加Data注解就不用再手动去添加getting和setting了第六步创建 Controller 层RestController // 处理HTTP请求返回JSON数据 RequestMapping(/users) // 这个Controller处理 /users 开头的请求 public class UserController { Autowired private UserService userService; GetMapping(/{id}) // 处理 GET /users/123 这种请求 public User getUser(PathVariable Long id) { // PathVariable从URL中取参数 return userService.getUserById(id); // 调用Service } }解释RestController告诉 Spring 这个类处理 HTTP 请求并且方法返回的结果直接转成 JSONRequestMapping(/users)所有请求路径都以/users开头GetMapping(/{id})只处理 GET 请求{id}是路径变量PathVariable把 URL 中的{id}赋值给方法参数第七步创建 Service 层接口public interface UserService { User getUserById(Long id); }实现类Service // 交给Spring管理 public class UserServiceImpl implements UserService { Autowired // 自动注入Mapper private UserMapper userMapper; Override public User getUserById(Long id) { return userMapper.findById(id); // 调用Mapper执行SQL } }解释ServiceSpring 会创建这个类的实例并管理它AutowiredSpring 自动把 UserMapper 的实现对象赋值进来Service 层的作用业务逻辑处理比如参数校验、权限判断。目前很简单直接调 Mapper第八步创建 Mapper 接口Mapper // 告诉Spring这是MyBatis的映射器 public interface UserMapper { User findById(Param(id) Long id); // 根据ID查询用户 }解释MapperSpring 会为这个接口自动生成实现类findById方法名对应 SQL 的 idParam(id)把参数传给 SQL 语句第九步 编写 SQL 映射文件Mapper.xmlmapper namespacecom.example.demo.mapper.UserMapper select idfindById resultTypecom.example.demo.entity.User SELECT id, name, age FROM user WHERE id #{id} /select /mapper解释namespace必须指向上面那个 Mapper 接口的全路径select标签表示这是一个查询操作id对应 Mapper 接口的方法名resultType查询结果要转换成哪个实体类#{id}占位符会被方法传进来的参数替换为什么要有这个文件把 SQL 语句从 Java 代码中分离出来方便管理和优化 SQL第十步添加 Mapper 扫描并运行DemoApplication类的 main 方法SpringBootApplication MapperScan(com.example.demo.mapper) // 扫描Mapper接口所在包 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }解释MapperScan告诉 Spring 去哪里找Mapper注解的接口自动生成实现类。访问http://localhost:8080/users/1请求流程总结textHTTP请求 → Controller → Service → Mapper → SQL → 数据库 ↓ ↓ ↓ ↓ /users/1 接收参数 业务逻辑 执行SQL ↓ 返回JSON每一步的职责Controller接收请求、参数校验、返回结果Service业务逻辑处理Mapper数据库操作Entity数据载体

相关文章:

从零开始:Spring Boot + MyBatis 搭建后端接口完整教程

前言:你是否刚接触 Spring Boot,面对一堆配置不知从何下手?是否看了很多教程,却还是搞不清 Controller、Service、Mapper 到底谁先谁后?本文带你从零开始,手把手搭建一个完整的 Spring Boot MyBatis 项目。…...

当智能眼镜遇上了AI——使用灵珠搭建【镜中食谱】智能体

今天带大家沉浸式体验 Rokid 自研的 AI 开发平台——【灵珠平台】! 🌟 零代码、零门槛,手把手教你搭建一个专属的【镜中食谱】智能体,让 Rokid Glasses 解决你的吃饭难题! 本文智能体基于Rokid AI Glasses和灵珠AI平…...

Pi0视觉-语言-动作流模型科研应用:人类意图识别与机器人行为对齐研究

Pi0视觉-语言-动作流模型科研应用:人类意图识别与机器人行为对齐研究 1. 项目概述与科研价值 Pi0是一个突破性的视觉-语言-动作流模型,专门为通用机器人控制而设计。这个模型的核心价值在于它能够将人类的自然语言指令、视觉感知和机器人动作生成无缝连…...

robot_localization实现imu和odom融合

记录使用robot_localization进行融合下载地址:git clone https://gitee.com/bingshuibuliang/robot_localization.git注意:/odometry/filtered是这个节点发送的融合位姿,修改的话需要在ekf_nodelet_template.launch里,在使用robot…...

从扩频时钟到弹性缓存:一张图看懂PCIe是如何‘容忍’时钟偏差,保证数据不丢的

从水流模型到数据同步:图解PCIe时钟偏差补偿机制 想象一下城市供水系统中两个不同步的水泵——一个抽水快,一个抽水慢。如果没有调节装置,要么水管爆裂,要么用户断水。PCIe总线面临的时钟同步挑战与此惊人相似。本文将用生活化的水…...

《Spring Boot 第一个 REST API 教程》

前置知识:Java 基础、Maven 基础 最终效果:启动一个 Spring Boot 应用,通过浏览器访问 http://localhost:8080/hello 得到 {"msg":"Hello World"} 步骤 1:创建项目 推荐使用 Spring Initializr:…...

ROS2笔记2:使用Topic自定义Messages实现nodes之间通讯

1. Package规划 1.1 自定义消息接口my_interface_pkg DirCommandRequest.msg请求Topic消息 由发起node发起的Topic消息builtin_interfaces/Time stamp # 记录时间戳 string directory # 操作的目录 int8 command # 操作指令. 0:list, 1:re…...

如何3分钟解决百度网盘提取码难题:baidupankey完全指南

如何3分钟解决百度网盘提取码难题:baidupankey完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾因找不到百度网盘提取码而错过重要资源?当朋友分享学习资料、同事发送工作文件&#xff…...

2026年最新好用的WMS仓库管理系统盘点!10款国内外热门WMS系统推荐

面对仓储管理的挑战,越来越多的企业开始关注WMS系统。但在选型时,很多企业面临同样的困惑:市场上WMS系统那么多,到底哪款适合自己?本文盘点2026年国内外10款热门WMS系统,从功能特点、适用场景、性价比等维度…...

3分钟搞定百度网盘提取码:baidupankey智能工具终极指南

3分钟搞定百度网盘提取码:baidupankey智能工具终极指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经遇到过这样的情况:好不容易找到了需要的资源,却被百度网盘提取码挡在门外&…...

打卡信奥刷题(3138)用C++实现信奥题 P7617 [COCI 2011/2012 #2] KOMPIĆI

P7617 [COCI 2011/2012 #2] KOMPIĆI 题目描述 给定 NNN 个正整数 A1,A2,...,ANA_1,A_2,...,A_NA1​,A2​,...,AN​&#xff0c;求有多少整数对 (i,j)(i,j)(i,j)&#xff0c;满足以下条件&#xff1a; 1≤i<j≤N1 \le i < j \le N1≤i<j≤NAiA_iAi​ 和 AjA_jAj​ 至…...

如何让全面战争MOD开发从繁琐变得优雅:RPFM的现代化解决方案

如何让全面战争MOD开发从繁琐变得优雅&#xff1a;RPFM的现代化解决方案 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https…...

我第一次做 OData 后端服务时,真正绊住我的,不是代码,而是 Cloud Foundry 里的这些基础坑

最近我给自己加了一条训练线,除了平时在社区里吸收知识、输出知识,我还逼着自己每周完成一个带明确目标的小任务。第二个任务,我挑了一个很适合拿来练基本功的方向,亲手做一个基于 OData 的后端服务。 原本我以为,真正费劲的部分会落在 OData 协议本身,像 entity、servi…...

CSS如何快速获取网页上的标准色值_借助开发者工具的取色器和色彩格式转换功能

Chrome开发者工具中点击Styles面板颜色旁小色块启用取色器&#xff0c;悬停页面实时显示hex/rgb/hsl值&#xff0c;长按可循环切换格式&#xff1b;rgba透明度和色彩空间差异会导致与设计稿不一致。Chrome开发者工具里怎么直接取网页上某个颜色的十六进制值点开 DevTools&#…...

【Linux】进程(2)状态

目录 一、冯诺依曼 二、操作系统 三、进程状态 &#xff08;1&#xff09;运行状态&#xff1a;进程已获得CPU资源&#xff0c;正在执行指令&#xff0c;是进程生命周期中唯一能直接操作硬件、推进任务的阶段。 &#xff08;2&#xff09;阻塞状态&#xff1a;进程因等待特…...

Canny边缘检测的精度天花板在哪里?深入剖析Devernay亚像素校正的误差与优化

Canny边缘检测的精度天花板在哪里&#xff1f;深入剖析Devernay亚像素校正的误差与优化 在工业检测、遥感成像等对精度要求严苛的领域&#xff0c;传统Canny算法提供的像素级边缘定位往往难以满足需求。当测量芯片电路线宽或分析卫星图像中的道路边界时&#xff0c;即使单个像素…...

2026 最新 Gemini 国内能用吗?无需特殊配置直连教程

在2026年的今天&#xff0c;AI工具已经成为我们日常生活和工作的重要助手。很多用户关心&#xff1a;Gemini这款由Google推出的强大AI模型&#xff0c;在国内能否顺畅使用&#xff1f;答案是肯定的。目前最推荐的访问方式是通过OneAiPlus(u.oneaiplus.cn)平台&#xff0c;它聚合…...

JDK安装与忍者像素绘卷:天界画坊Java SDK开发实战

JDK安装与忍者像素绘卷&#xff1a;天界画坊Java SDK开发实战 1. 前言&#xff1a;为什么需要这个SDK 如果你正在开发一个需要调用AI绘画服务的Java应用&#xff0c;直接处理HTTP请求、参数序列化和结果解析可能会很麻烦。本文将带你从JDK安装开始&#xff0c;一步步构建一个…...

BGE Reranker-v2-m3效果实测:在低资源方言查询(如粤语书面语)中保持83%+匹配准确率

BGE Reranker-v2-m3效果实测&#xff1a;在低资源方言查询&#xff08;如粤语书面语&#xff09;中保持83%匹配准确率 1. 引言&#xff1a;方言查询的匹配挑战 在日常信息检索中&#xff0c;我们经常遇到一个棘手问题&#xff1a;当用户使用方言或地区性语言进行查询时&#…...

2026年,高精度食品卫生级超声波液位计批发,究竟有何独特之处?

在食品行业的生产过程中&#xff0c;液位的精确测量至关重要&#xff0c;它关乎着产品的质量、生产的效率以及成本的控制。高精度食品卫生级超声波液位计作为一种关键的测量工具&#xff0c;在2026年的市场上正发挥着越来越重要的作用。下面我们就来详细探讨一下它的独特之处。…...

yolov8模型训练MOT20数据集 行人多目标跟踪计数数据集的训练及应用 如何根据mot20数据集 来实现行人目标识别,行人追踪,行人的计数

yolov8模型训练MOT20数据集 行人多目标跟踪计数数据集的训练及应用 如何根据mot20数据集 来实现行人目标识别&#xff0c;行人追踪&#xff0c;行人的计数 文章目录1. 数据准备与预处理2. 创建 data.yaml 文件3. 环境搭建4. 模型训练5. 推理与部署6. 性能评估7. 模型导出行人追…...

线性代数与矩阵运算:AI世界的数学基石——从SVD到特征值分解的实战解析

线性代数与矩阵运算&#xff1a;AI世界的数学基石摘要&#xff1a;线性代数是人工智能的数学语言。本文深入解析向量、矩阵、特征值、SVD等核心概念&#xff0c;结合Python代码实战&#xff0c;带你理解这些数学工具如何在降维、推荐系统、图像压缩等AI场景中发挥关键作用。一、…...

Claude Design发布:3个核心能力让设计到代码全程自动化,Adobe和Figma股价应声下跌

大家好&#xff0c;我是苍一&#xff0c;一个干了13年的后端开发&#xff0c;正在探索AI编程&#xff0c;从产品到开发的全生命周期最佳实践&#xff0c;如果您感兴趣&#xff0c;欢迎关注&#x1f447;&#xff0c;看我如何自我革命。Anthropic旗下实验室刚刚推出了一款名为Cl…...

亲测有效:GPT-OSS-20B在M1 Mac上的运行效果与速度实测

亲测有效&#xff1a;GPT-OSS-20B在M1 Mac上的运行效果与速度实测 1. 开篇&#xff1a;打破认知的本地大模型体验 当大多数人还在依赖云端API访问大语言模型时&#xff0c;一个令人惊喜的事实正在发生&#xff1a;搭载M1芯片的MacBook已经能够流畅运行参数量达210亿的GPT-OSS…...

Android TTS开发避坑指南:从Google TTS到华为引擎,如何搞定多语言语音包下载与兼容性?

Android TTS开发实战&#xff1a;多引擎兼容与语言包管理全解析 在全球化应用开发中&#xff0c;文本转语音&#xff08;TTS&#xff09;功能的质量直接影响着用户体验。当你的应用需要支持英语、西班牙语、阿拉伯语等多语言场景时&#xff0c;不同设备厂商的TTS引擎差异就像一…...

DeEAR在客服质检中的落地应用:基于wav2vec2的语音情感多维评估实战案例

DeEAR在客服质检中的落地应用&#xff1a;基于wav2vec2的语音情感多维评估实战案例 1. 引言&#xff1a;客服质检中的情感识别挑战 在客服行业&#xff0c;传统的质检方式主要依赖人工抽查录音&#xff0c;不仅效率低下&#xff0c;而且难以客观评估服务过程中的情感表达。一…...

real-anime-z显存优化部署方案:6GB显存卡运行1024×1024真实系出图

real-anime-z显存优化部署方案&#xff1a;6GB显存卡运行10241024真实系出图 1. 模型简介 real-anime-z是基于Z-Image的Lora版本的真实系动画图片生成模型。该模型经过特殊优化&#xff0c;能够在仅6GB显存的显卡上稳定运行&#xff0c;并生成10241024分辨率的高质量真实系动…...

告别手动写提示词:AI头像生成器帮你快速设计专属头像

告别手动写提示词&#xff1a;AI头像生成器帮你快速设计专属头像 1. 为什么你需要AI头像生成器 在数字社交时代&#xff0c;头像已经成为个人品牌的重要组成部分。无论是社交媒体、工作平台还是游戏社区&#xff0c;一个精心设计的头像能让你在众多用户中脱颖而出。然而&…...

YOLO12手把手教学:从上传图片到获取检测结果完整流程

YOLO12手把手教学&#xff1a;从上传图片到获取检测结果完整流程 1. 引言 目标检测是计算机视觉领域最基础也最重要的任务之一&#xff0c;而YOLO系列模型因其出色的实时性能一直备受关注。2025年最新发布的YOLO12模型在保持实时推理速度的同时&#xff0c;通过创新的注意力机…...

Qwen3.5-9B-GGUF真实案例:软件需求文档→测试用例→接口定义链式生成

Qwen3.5-9B-GGUF真实案例&#xff1a;软件需求文档→测试用例→接口定义链式生成 1. 项目背景与模型介绍 Qwen3.5-9B-GGUF是阿里云开源的Qwen3.5-9B模型经过GGUF格式量化后的版本&#xff0c;特别适合在消费级硬件上部署运行。这个90亿参数的稠密模型采用了创新的Gated Delta…...