news 2026/4/29 0:35:57

SpringBoot + MyBatis + H2 实验报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot + MyBatis + H2 实验报告

一、实验目的

  1. 掌握 Spring Boot 项目基本结构
  2. 熟悉 MyBatis 的基本使用(Mapper、SQL 映射)
  3. 实现后端接口并通过 HTTP 请求访问
  4. 实现数据库数据查询并返回给前端

二、实验环境

  • JDK:17
  • 开发工具:IntelliJ IDEA
  • 构建工具:Maven
  • 框架:Spring Boot 3.4.3
  • 持久层:MyBatis
  • 数据库:H2(内存数据库)

三、项目结构

hello
├── src
│ ├── main
│ │ ├── java/com/example/hello
│ │ │ ├── controller
│ │ │ ├── service
│ │ │ ├── mapper
│ │ │ └── entity
│ │ └── resources
│ │ ├── application.properties
│ │ ├── schema.sql
│ │ └── data.sql
├── pom.xml


四、核心代码实现

1️⃣ 实体类 User

package com.example.hello.entity;

public class User {
private Integer id;
private String username;
private String email;

public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }

public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }

public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}


2️⃣ Mapper 接口

package com.example.hello.mapper;

import com.example.hello.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;

@Mapper
public interface UserMapper {

@Select("SELECT * FROM user")
List<User> findAll();
}


3️⃣ Service 层

package com.example.hello.service;

import com.example.hello.entity.User;
import com.example.hello.mapper.UserMapper;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

private final UserMapper userMapper;

public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}

public List<User> getAllUsers() {
return userMapper.findAll();
}
}


4️⃣ Controller 层

package com.example.hello.controller;

import com.example.hello.entity.User;
import com.example.hello.service.UserService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {

private final UserService userService;

public UserController(UserService userService) {
this.userService = userService;
}

@GetMapping
public List<User> getUsers() {
return userService.getAllUsers();
}
}


5️⃣ 数据库初始化

schema.sql

CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
email VARCHAR(50)
);

data.sql

INSERT INTO user (username, email) VALUES ('alice', 'alice@example.com');
INSERT INTO user (username, email) VALUES ('bob', 'bob@example.com');


6️⃣ 配置文件

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

spring.h2.console.enabled=true

mybatis.configuration.map-underscore-to-camel-case=true


五、运行结果

启动项目后访问:

http://localhost:8080/api/users

返回结果:

[
{
"id": 1,
"username": "alice",
"email": "alice@example.com"
},
{
"id": 2,
"username": "bob",
"email": "bob@example.com"
}
]


六、关键问题与解决

❌ 问题1:JDK版本不兼容

错误:

类文件具有错误的版本 61.0,应为 52.0

原因:

  • Spring Boot 3 必须使用 JDK 17+
  • 系统默认是 JDK 1.8

✅ 解决:

$env:JAVA_HOME="C:\Users\33502\.jdks\ms-17.0.18"
$env:PATH="$env:JAVA_HOME\bin;$env:PATH"


❌ 问题2:Maven 无法下载依赖(证书问题)

错误:

PKIX path building failed

✅ 解决:
使用阿里云镜像(已自动生效)或重新执行:

mvn clean install


❌ 问题3:mvnw.cmd 无法执行

原因:

  • 不在项目目录

✅ 解决:

cd C:\Users\33502\Desktop\hello
.\mvnw.cmd spring-boot:run


七、实验总结

本实验成功实现了:

  • Spring Boot 项目搭建
  • MyBatis 查询数据库
  • RESTful 接口开发
  • H2 内存数据库初始化
  • 前后端数据交互

通过本实验,掌握了从数据库 → 后端 → 接口 的完整开发流程。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 0:33:42

UWB定位方案:基于WMK-K2技术的数字化升级路径

在数字化仓储、工业制造和资产管理场景中&#xff0c;很多企业已经完成了设备联网&#xff0c;却仍然面临同一个现实问题&#xff1a;资产在线&#xff0c;不等于资产可控。 系统里显示“设备存在”&#xff0c;但现场依旧会发生“找不到、调不动、管不住”的情况。真正影响运…

作者头像 李华
网站建设 2026/4/29 0:33:42

教你怎样搭建自动化测试框架?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 最近好多小伙伴都在说接口自动化测试&#xff0c;那么究竟什么是接口自动化测试呢&#xff1f;让我们一起往下看就知道了&#xff0c;首先我们得先弄清楚下面这…

作者头像 李华
网站建设 2026/4/16 3:01:03

语义缓存semantic cache技术白皮书

一、引言与背景 在传统的计算机科学中,缓存是提升系统性能的核心手段之一。然而,传统的键值存储缓存依赖于严格的字符串匹配。在自然语言处理场景下,人类表达的多样性导致了极低的缓存命中率。例如,“如何重置密码?”与“我忘记了密码怎么办?”在业务逻辑上应指向同一答…

作者头像 李华
网站建设 2026/4/16 3:01:09

深入浅出 CPU 流水线:数据通路、指令冒险与优化实战

本文是一篇关于计算机体系结构中 CPU 流水线&#xff08;Pipelining&#xff09;的核心知识笔记。文章从面向流水线的 MIPS 指令集设计哲学出发&#xff0c;深入剖析了制约流水线性能的三大冒险&#xff08;结构、数据、控制&#xff09;及其现代解决方案&#xff08;哈佛结构、…

作者头像 李华
网站建设 2026/4/15 1:11:10

基于深度学习的道路裂缝智能检测系统

目录 研究目的 研究意义 国外研究现状分析 需求分析 可行性分析 功能分析 数据库设计 1. 数据库表结构&#xff08;表格模式&#xff09; 2. 建表MySQL代码 研究目的 随着我国交通基础设施建设的飞速发展&#xff0c;公路总里程已跃居世界前列&#xff0c;道路养护管理…

作者头像 李华