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

【Spring Boot】Spring Boot结合MyBatis简单实现学生信息管理模块

实战:实现学生信息管理模块

  1. 环境准备
  • JDK
  • Spring Boot
  • MyBatis
  1. 创建Spring Boot项目
    使用Spring Initializr创建一个新的Spring Boot项目,并添加以下依赖:
  • Spring Web
  • MyBatis Framework
  • MySQL Driver
  1. 数据库设计
    在MySQL数据库中创建一个名为studentdb的数据库,并创建一个名为students的表,表结构如下:
CREATE TABLE `students` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) NOT NULL,`email` varchar(255) NOT NULL,`address` varchar(255) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. 配置数据源和MyBatis
    application.properties文件中添加以下配置:
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# MyBatis配置
mybatis.type-aliases-package=com.example.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml
  1. 定义实体类
    创建一个名为Student的实体类,代码如下:
public class Student {private int id;private String name;private String email;private String address;// getter和setter方法省略
}
  1. 定义Mapper接口
    创建一个名为StudentMapper的Mapper接口,代码如下:
@Mapper
public interface StudentMapper {List<Student> getAllStudents();Student getStudentById(int id);int addStudent(Student student);int updateStudent(Student student);int deleteStudent(int id);
}
  1. 定义Mapper XML配置文件
    resources/mapper下创建一个名为StudentMapper.xml的配置文件,代码如下:
<mapper namespace="com.example.demo.mapper.StudentMapper"><resultMap id="StudentMap" type="com.example.demo.entity.Student"><id property="id" column="id" /><result property="name" column="name" /><result property="email" column="email" /><result property="address" column="address" /></resultMap><select id="getAllStudents" resultMap="StudentMap">SELECT * FROM students</select><select id="getStudentById" resultMap="StudentMap">SELECT * FROM students WHERE id=#{id}</select><insert id="addStudent" parameterType="com.example.demo.entity.Student">INSERT INTO students(name, email, address) VALUES(#{name}, #{email}, #{address})</insert><update id="updateStudent" parameterType="com.example.demo.entity.Student">UPDATE students SET name=#{name}, email=#{email}, address=#{address} WHERE id=#{id}</update><delete id="deleteStudent">DELETE FROM students WHERE id=#{id}</delete>
</mapper>
  1. 实现Controller
    创建一个名为StudentController的Controller,代码如下:
@RestController
@RequestMapping("/api")
public class StudentController {@Autowiredprivate StudentMapper studentMapper;@GetMapping("/students")public List<Student> getAllStudents() {return studentMapper.getAllStudents();}@GetMapping("/students/{id}")public Student getStudentById(@PathVariable int id) {return studentMapper.getStudentById(id);}@PostMapping("/students")public int addStudent(@RequestBody Student student) {return studentMapper.addStudent(student);}@PutMapping("/students")public int updateStudent(@RequestBody Student student) {return studentMapper.updateStudent(student);}@DeleteMapping("/students/{id}")public int deleteStudent(@PathVariable int id) {return studentMapper.deleteStudent(id);}
}
  1. 测试API
    使用Postman或其他工具测试API,例如:
  • GET http://localhost:8080/api/students
  • GET http://localhost:8080/api/students/1
  • POST http://localhost:8080/api/students
    请求体:
    {"name": "张三","email": "zhangsan@example.com","address": "北京市海淀区"
    }
    
  • PUT http://localhost:8080/api/students
    请求体:
    {"id": 1,"name": "张三","email": "zhangsan@example.com","address": "北京市海淀区"
    }
    
  • DELETE http://localhost:8080/api/students/1

完成以上步骤后,就可以使用Spring Boot和MyBatis实现一个简单的学生信息管理模块了。

相关文章:

【Spring Boot】Spring Boot结合MyBatis简单实现学生信息管理模块

实战&#xff1a;实现学生信息管理模块 环境准备 JDKSpring BootMyBatis 创建Spring Boot项目 使用Spring Initializr创建一个新的Spring Boot项目&#xff0c;并添加以下依赖&#xff1a; Spring WebMyBatis FrameworkMySQL Driver 数据库设计 在MySQL数据库中创建一个名…...

【Java List与Map】List<T> Map与Map List<T>的区别(126)

List&#xff1c;T&#xff1e; Map&#xff1a;List里面的数据类型包含Map&#xff1b; Map List&#xff1c;T&#xff1e;&#xff1a;Map里面value的数据类型包含List&#xff1b; 测试案例&#xff1a; import java.util.ArrayList; import java.util.HashMap; import j…...

【FreeRTOS】常用函数总结

xTaskCreate()&#xff1a; 用法&#xff1a; xTaskCreate(taskFunction, taskName, stackSize, parameters, priority, taskHandle)参数&#xff1a; taskFunction&#xff1a;任务函数&#xff0c;即任务的入口函数。taskName&#xff1a;任务的名称。stackSize&#xff1a;任…...

The Cherno——OpenGL

The Cherno——OpenGL 1. 欢迎来到OpenGL OpenGL是一种跨平台的图形接口&#xff08;API&#xff09;&#xff0c;就是一大堆我们能够调用的函数去做一些与图像相关的事情。特殊的是&#xff0c;OpenGL允许我们访问GPU&#xff08;Graphics Processing Unit 图像处理单元&…...

linux中学习控制进程的要点

1. 进程创建 1.1 fork函数 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核会做以下操作 分配新的内存块和…...

C++Qt QSS要注意的坑

qss源自css&#xff0c;相当于css的一个子集&#xff0c;主要支持的是css2标准&#xff0c;很多网上的css3的标准的写法在qss这里是不生效的&#xff0c;所以不要大惊小怪。 qss也不是完全支持所有的css2&#xff0c;比如text-align官方文档就有说明&#xff0c;只支持 QPushB…...

LeetCode每日一题:56. 合并区间(2023.8.27 C++)

目录 56. 合并区间 题目描述&#xff1a; 实现代码与解析&#xff1a; 排序 贪心 原理思路&#xff1a; 56. 合并区间 题目描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&…...

电视盒子什么牌子好?经销商整理线下热销电视盒子品牌排行榜

在面对众多品牌和型号时&#xff0c;不知道电视盒子哪个牌子好的消费者超多&#xff0c;很多人进店都会问我电视盒子哪款好&#xff1f;我根据店铺内近两年的销量情况整理了电视盒子品牌排行榜&#xff0c;看看实体店哪些电视盒子最值得入手吧。 TOP 1.泰捷WEBOX 40Pro Max电视…...

JavaScript关于函数的小挑战

题目 回到两个体操队&#xff0c;即海豚队和考拉队! 有一个新的体操项目&#xff0c;它的工作方式不同。 每队比赛3次&#xff0c;然后计算3次得分的平均值&#xff08;所以每队有一个平均分&#xff09;。 只有当一个团队的平均分至少是另一个团队的两倍时才会获胜。否则&…...

机器学习深度学习——针对序列级和词元级应用微调BERT

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——NLP实战&#xff08;自然语言推断——注意力机制实现&#xff09; &#x1f4da;订阅专栏&#xff1a;机…...

重启Mysql时报错rm: cannot remove ‘/var/lock/subsys/mysql‘: Permission denied

只有用mysql重启时报错&#xff0c;用root不报错 [mysqlt3-dtpoc-dtpoc-web04 bin]$ service mysql restart Shutting down MySQL.. SUCCESS! rm: cannot remove /var/lock/subsys/mysql: Permission denied Starting MySQL.. SUCCESS! [roott3-dtpoc-dtpoc-web04 ~]# serv…...

[C/C++]指针详讲-让你不在害怕指针

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…...

无涯教程-Android - Frame Layout函数

Frame Layout 旨在遮挡屏幕上的某个区域以显示单个项目&#xff0c;通常&#xff0c;应使用FrameLayout来保存单个子视图&#xff0c;因为在子视图彼此不重叠的情况下&#xff0c;难以以可扩展到不同屏幕尺寸的方式组织子视图。 不过&#xff0c;您可以使用android:layout_grav…...

docker desktop安装es 并连接elasticsearch-head:5

首先要保证docker安装成功&#xff0c;打开cmd&#xff0c;输入docker -v&#xff0c;出现如下界面说明安装成功了 下面开始安装es 第一步&#xff1a;拉取es镜像 docker pull elasticsearch:7.6.2第二步&#xff1a;运行容器 docker run -d --namees7 --restartalways -p 9…...

计网(第四章)(网络层)(六)

目录 一、路由选择协议&#xff08;动态路由自动获取路由信息&#xff09;概述&#xff1a; 二、因特网采用的路由协议 主要特点&#xff1a; 1.自适应 2.分布式 3.分层次 因特网采用分层次的路由选择协议&#xff1a; 三、常见的路由选择协议 一、路由选择协议&#xff…...

科研无人机平台P600进阶版,突破科研难题!

随着无人机技术日益成熟&#xff0c;无人机的应用领域不断扩大&#xff0c;对无人机研发的需求也在不断增加。然而&#xff0c;许多开发人员面临着无法从零开始构建无人机的时间和精力压力&#xff0c;同时也缺乏适合的软件平台来支持他们的开发工作。为了解决这个问题&#xf…...

Apache的简单介绍(LAMP架构+搭建Discuz论坛)

文章目录 1.Apache概述1.1什么是apache1.2 apache的功能及特性1.2.1功能1.2.2特性 1.3 MPM 工作模式1.3.1 prefork模式1.3.2 worker模式1.3.3 event模式 2.LAMP概述2.1 LAMP的组成2.2 LAMP各组件的主要作用2.3 LAMP的工作过程2.4CGI和FastCGI 3.搭建Discuz论坛所需4.编译安装Ap…...

CDL基础原理

一、CDL简介 CDL&#xff08;全称Change Data Loader&#xff09;是一个基于Kafka Connect框架的实时数据集成服务。 CDL服务能够从各种OLTP数据库中捕获数据库的Data Change事件&#xff0c;并推送到kafka&#xff0c;再由sink connector推送到大数据生态系统中。 CDL目前支…...

WPF基础入门-Class7-WPF-MVVN框架

WPF基础入门 Class7-MVVN框架 使用框架可以省掉如Class6中的ViewModelBase.cs的OnPropertyChanged&#xff0c;亦方便命令传参 1、NuGet安装CommunityToolkit.Mvvm&#xff08;原Mircrosoft.Toolkit.Mvvm&#xff09;也可以安装MVVMLight等其他集成库 2、显示页面&#xff1…...

C语言练习题第三弹!!!绝对典中典!!!

目录 1.单身狗1 1.1 题目 1.2 分析推理 1.3 代码实现 2.单身狗2 2.1 题目 2.2 分析推理 2.3 代码实现 3.字符串左旋 3.1 题目 3.2 分析推理 3.3 代码实现 3.3.1 方法一 3.3.2 优化一 3.3.2.1 思路分析 3.3.2.2 strcpy函数和strncat函数 3.3.2.3 代码实现 3.3.…...

2026 最新 Web 安全入门教程 零基础全面吃透 Web 攻防

“未知攻&#xff0c;焉知防”——真正的安全始于理解攻击者的思维 在日益数字化的世界中&#xff0c;Web安全工程师已成为企业防护体系的“数字盾牌”。本文将提供一条清晰的进阶路径&#xff0c;助你在2025年的网络安全领域脱颖而出。 一、认知篇&#xff1a;理解安全本质 …...

5分钟学会Windows自动化:Pulover‘s Macro Creator终极指南

5分钟学会Windows自动化&#xff1a;Pulovers Macro Creator终极指南 【免费下载链接】PuloversMacroCreator Automation Utility - Recorder & Script Generator 项目地址: https://gitcode.com/gh_mirrors/pu/PuloversMacroCreator 你是否每天重复着相同的鼠标点击…...

CMake基础:常用内部变量和环境变量的引用

目录 1.常用 CMake 变量 1.1.编译与构建控制 1.2.路径与目录变量 1.3.项目信息变量 1.4.系统与平台变量 1.5.工具链与交叉编译 1.6.测试与安装变量 1.7.高级编译选项 2.常用环境变量 2.1.编译器与工具链 2.2.依赖库路径 2.3.CMake 专用环境变量 2.4.系统环境变量P…...

chatgpt-web-midjourney-proxy的Tauri桌面应用:跨平台AI客户端构建终极指南

chatgpt-web-midjourney-proxy的Tauri桌面应用&#xff1a;跨平台AI客户端构建终极指南 想要在本地轻松体验ChatGPT、Midjourney和GPTs的强大功能吗&#xff1f;chatgpt-web-midjourney-proxy项目的Tauri桌面应用为你提供了完美的解决方案&#xff01;这款跨平台AI客户端让AI助…...

MySQL中redo log 和 bin log的本质区别,别再搞混了!

很多初学者容易把 redo log 和 binlog 搞混&#xff0c;它们都是 MySQL 的日志&#xff0c;但有着本质的区别&#xff1a;对比维度redo logbin log所属层级InnoDB 存储引擎层MySQL Server 层日志类型物理日志&#xff0c;记录数据页的修改逻辑日志&#xff0c;记录SQL语句或行变…...

终极AI评估指南:用DeepEval开源框架轻松保障你的大语言模型质量

终极AI评估指南&#xff1a;用DeepEval开源框架轻松保障你的大语言模型质量 【免费下载链接】deepeval The LLM Evaluation Framework 项目地址: https://gitcode.com/GitHub_Trending/de/deepeval 你是否曾担心AI助手给出错误的医疗建议&#xff1f;是否焦虑金融AI客服…...

艾络迅 × 荣耀:联合推出Meteer AI跳舞机器人玩具,智能科技重新定义儿童陪伴

在快节奏的现代生活中&#xff0c;每个孩子都渴望获得专属的陪伴与关注。他们对音乐和律动有着天然的热爱&#xff0c;期待拥有能够与之互动、共同成长的智能伙伴。然而&#xff0c;传统玩具的单一功能已无法满足数字原生代儿童的多元化需求。 正是洞察到这一痛点&#xff0c;艾…...

端口映射配置后连不上?别慌!按这4步排查,一学就会

一、什么是端口映射监控端口映射监控是指对端口映射规则的状态、流量及连通性进行全面监测&#xff0c;确保映射规则正常生效&#xff0c;及时发现并排查故障。它涵盖两个层面&#xff1a;本机端口监听状态检测和网络层端口映射连通性验证。二、本机端口监控&#xff08;服务端…...

美联储加息降息,如何牵动美黄金价格?

在国际金融市场中&#xff0c;美联储的加息、降息政策&#xff0c;是影响美黄金价格最核心的因素之一。很多普通投资者看不懂复杂术语&#xff0c;小编将从机会成本、美元强弱、市场预期三个关键点&#xff0c;让大家轻松看懂金价涨跌逻辑。黄金本身是无息资产&#xff0c;不会…...

5分钟打造你的桌面股票看板:TrafficMonitor股票插件完整指南

5分钟打造你的桌面股票看板&#xff1a;TrafficMonitor股票插件完整指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为错过重要股票行情而烦恼吗&#xff1f;想在工作时…...