一、 实验目的

本项目的核心目标分为两个模块:

  1. 整合 SpringBoot HelloWorld 程序:实现基本的 Web 请求响应。

  2. 整合 MyBatis 框架:通过 MyBatis 读取 MySQL 数据库中的真实数据,并以 JSON 格式返回给前端页面。 项目致力于保证代码的高可复用性与跨设备的运行一致性。

二、 数据库准备

为了保证项目拉取后能直接测试,附上本项目的初始化 SQL 脚本。

💡 操作指南:在 MySQL 客户端或 Navicat 中直接运行此脚本即可完成建库、建表及测试数据的准备。

-- 创建数据库
CREATE DATABASE IF NOT EXISTS `mybatis` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `mybatis`;

-- 删除已存在的表(防止重复运行报错)
DROP TABLE IF EXISTS `user`;

-- 创建 user 表
CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(50) NOT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年龄',
  `sex` varchar(10) DEFAULT NULL COMMENT '性别',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

-- 插入测试数据 (对应你浏览器跑出来的张三和李四)
INSERT INTO `user` (`name`, `age`, `sex`, `create_time`) VALUES 
('zhangsan', 18, '1', '2026-04-14 18:38:36'),
('lisi', 19, '1', '2026-04-14 18:38:36'),
('zhangsan', 18, '1', '2022-07-21 18:03:02'),
('lisi', 19, '1', '2022-07-21 18:03:05');

三、 项目架构与目录说明

本项目严格遵循经典的分层架构(Controller -> Service -> Mapper -> Data),目录结构如下:

com.example.springboot_study
 ├── controller
 │    └── HelloController.java    // 接收前端请求,暴露 /hello 接口
 ├── domain
 │    └── User.java               // 实体类,与数据库字段一一对应
 ├── mapper
 │    └── UserMapper.java         // MyBatis 接口,定义数据访问方法
 ├── service
 │    ├── UserService.java        // 业务逻辑接口
 │    └── impl
 │         └── UserServiceImpl.java // 业务逻辑实现类
 └── SpringbootStudyApplication.java // SpringBoot 主启动类

resources
 ├── mapper
 │    └── UserMapper.xml          // MyBatis 映射文件,编写原生 SQL
 └── application.yml              // 核心配置文件(数据库连接等)

四、 核心配置与代码实现

1. 核心依赖 (pom.xml)

引入了 Spring Web 和 MyBatis 的 Starter,以及 MySQL 驱动:

2. 数据库连接配置 (application.yml)

3. Controller 层实现

五、 测试与运行结果

1.测试自己电脑

启动 SpringbootStudyApplication 后,控制台输出 Started SpringbootStudyApplication,代表内置 Tomcat 启动成功。 打开浏览器访问 http://localhost:8080/hello,成功获取到数据库中的 JSON 数据:

2.测试同学电脑

为验证项目的可移植性,邀请同学将本项目代码压缩包下载至其本地环境运行。

1.环境准备:同学先执行了项目附带的 mybatis.sql 脚本,快速搭建了相同的数据库环境。
2.后端启动:如下图所示,项目在不同设备上均能成功启动,Tomcat 运行在 8080 端口。

3.前端展示:如下图所示,通过浏览器访问 /hello 接口,准确获取到了预设的用户 JSON 数据。

结论:测试结果与开发环境完全一致,项目具备生产环境部署的稳定性。

六、 🚨 踩坑记录与解决方案 

在本次实验中,我遇到了几个非常典型的环境与配置问题,经过排查已彻底解决:

1.依赖下载失败

现象org.apache.ibatis 等包爆红,提示找不到符号。

原因与解决pom.xml 中 MySQL 驱动未指定明确版本或 Web 依赖名称拼写错误导致 Maven 下载中断。修正 pom.xml 并强制 Reload Maven 后解决。

2.包路径扫描不到组件

现象:报黄提示“Java 文件位于模块源根之外”,或启动后报 404。

原因与解决:IDEA 未将 java 文件夹识别为 Sources Root;且包目录层级错误(controller 等包与主启动类并列了)。将包拖入主包路径下,确保主启动类在最外层即可被自动扫描。

3.高版本 SpringBoot 与 MyBatis 冲突

现象:报错 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

原因与解决:使用的 Spring Boot 版本较新,导致 MyBatis Starter 没能成功自动注入 SqlSessionFactory。最终通过在主启动类中手动 @Bean 注入 SqlSessionFactory 绕过版本 Bug,完美打通底层数据流。

总结:本次作业不仅完成了代码功能的实现,更让我深刻认识到了 Java 开发中“约定大于配置”的重要性,以及在面对复杂报错时,梳理依赖和底层注入逻辑的关键性。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐