Spring Boot + MyBatis 实现的简单用户管理项目的完整目录结构示例

article/2025/7/22 4:34:38

在这里插入图片描述


📁 示例项目结构(基于 Maven)

user-management/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/usermanagement/
│   │   │       ├── controller/
│   │   │       │   └── UserController.java
│   │   │       ├── service/
│   │   │       │   ├── UserService.java
│   │   │       │   └── impl/
│   │   │       │       └── UserServiceImpl.java
│   │   │       ├── mapper/
│   │   │       │   └── UserMapper.java
│   │   │       ├── entity/
│   │   │       │   └── User.java
│   │   │       └── UserManagementApplication.java
│   │   ├── resources/
│   │   │   ├── mapper/
│   │   │   │   └── UserMapper.xml
│   │   │   ├── application.yml
│   │   │   └── logback-spring.xml (可选)
│   └── test/
│       └── java/
│           └── com/example/usermanagement/
│               └── UserServiceTests.java
├── pom.xml

各部分说明:

🧱 User.java(实体类)

package com.example.usermanagement.entity;public class User {private Integer id;private String name;private String email;// Getters & Setters
}

🧩 UserMapper.java(Mapper 接口)

package com.example.usermanagement.mapper;import com.example.usermanagement.entity.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface UserMapper {User findById(Integer id);List<User> findAll();int insert(User user);int update(User user);int deleteById(Integer id);
}

📄 UserMapper.xml(XML 映射文件)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.usermanagement.mapper.UserMapper"><select id="findById" resultType="com.example.usermanagement.entity.User">SELECT * FROM user WHERE id = #{id}</select><select id="findAll" resultType="com.example.usermanagement.entity.User">SELECT * FROM user</select><insert id="insert">INSERT INTO user(name, email) VALUES (#{name}, #{email})</insert><update id="update">UPDATE user SET name=#{name}, email=#{email} WHERE id=#{id}</update><delete id="deleteById">DELETE FROM user WHERE id=#{id}</delete></mapper>

🧠 UserService.javaUserServiceImpl.java

public interface UserService {User getUserById(Integer id);List<User> getAllUsers();void addUser(User user);void updateUser(User user);void deleteUser(Integer id);
}
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;public User getUserById(Integer id) {return userMapper.findById(id);}public List<User> getAllUsers() {return userMapper.findAll();}public void addUser(User user) {userMapper.insert(user);}public void updateUser(User user) {userMapper.update(user);}public void deleteUser(Integer id) {userMapper.deleteById(id);}
}

🌐 UserController.java

@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getUser(@PathVariable Integer id) {return userService.getUserById(id);}@GetMappingpublic List<User> getAllUsers() {return userService.getAllUsers();}@PostMappingpublic void addUser(@RequestBody User user) {userService.addUser(user);}@PutMappingpublic void updateUser(@RequestBody User user) {userService.updateUser(user);}@DeleteMapping("/{id}")public void deleteUser(@PathVariable Integer id) {userService.deleteUser(id);}
}

⚙️ application.yml

spring:datasource:url: jdbc:mysql://localhost:3306/user_db?useSSL=false&serverTimezone=UTCusername: rootpassword: yourpassworddriver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.usermanagement.entity

🚀 UserManagementApplication.java

@SpringBootApplication
public class UserManagementApplication {public static void main(String[] args) {SpringApplication.run(UserManagementApplication.class, args);}
}


http://www.hkcw.cn/article/lAfovAKOog.shtml

相关文章

科威特一住宅楼起火致6死 火灾原因待查

科威特费尔瓦尼耶省一栋住宅楼在6月1日凌晨发生严重火灾,导致至少6人死亡,另有5人重伤。据当地消防部门消息,该省拉卡地区一栋建筑内的两套公寓起火,消防人员在凌晨时分已控制住火势。目前火灾的具体原因尚未公布。科威特消防部门发布了公共安全提醒,呼吁各地设施业主严格…

100余所高校校长齐聚西财 共议智能时代高等教育未来

6月1日,西南财经大学百年校庆中外大学校长论坛在蓉城举行。来自厦门大学、中央财经大学、对外经济贸易大学、上海财经大学、电子科技大学、英国剑桥大学等国内外知名大学的100余位校长及专家学者齐聚一堂,共同探讨智能时代高等教育的未来。西南财经大学党委书记赵建军在发言中…

龙船漂移赛竟然还有这么多玩法 非遗遇上极限操作

龙舟不仅能劈波斩浪,还能像赛车一样倒车、漂移、丝滑过“S弯”。最近广东一场龙舟赛在网络上引起了广泛关注,网友纷纷表示这更像是水上版的《速度与激情》。在肇庆叠滘的狭窄河道里,25米长的龙舟以70度急转弯完成“神龙摆尾”,船尾几乎擦岸而过;“湾区伶仃”号上演了“蚂蚁…

萨尔布吕肯达成欧冠三连冠 樊振东加盟助力

乒乓球大满贯得主樊振东已加盟德国乒乓球甲级联赛的萨尔布吕肯俱乐部。该俱乐部曾是德国足坛老牌球队萨尔布吕肯第一足球俱乐部的乒乓球分部,直到前几年才在财务上独立运营。其标志和名称与原足球俱乐部相似,只是加上了德语“乒乓球”一词。樊振东是继柳承敏之后又一位加盟德…

著名相声演员朱文先因病去世 安徽曲艺界痛失泰斗

近日,合肥演艺集团有限公司发布讣告,安徽省著名相声表演艺术家、一级演员、原合肥市曲艺团党支部书记朱文先因病医治无效,于2025年5月31日上午9时12分在合肥逝世,享年87岁。朱文先生于1938年11月,毕生致力于相声艺术的传承与创新。1960年,他拜我国相声泰斗马三立先生的徒…

王晓晨被传婚讯后首露面 晒美照与玫瑰花

6月1日,演员王晓晨在社交媒体上晒出美照和玫瑰花,这是自她与男演员俞灏明的婚讯传出后首次公开露面。5月17日,俞灏明在社交媒体上晒出钻戒照和拉钩照,并写道:“直到你的出现,让我觉得过去承受的一切伤痛都值得!”照片中还附有文字:“晨,四个月了,我真的很想很想为你戴…

余承东和雷军疑似隔空喊话 车圈顶流互撕引热议

在端午节当天举行的粤港澳大湾区车展上,华为常务董事、终端BG董事长余承东再次发表了一系列引人注目的言论。他提到,“互联网讲话都是有记忆的”,并表示希望人们看看他到底是“余大嘴”还是“余小嘴”。他还暗示了一些竞争对手,称他们凭借强大的品牌和流量能力,即使产品并…

赵文卓一家看凤凰传奇演唱会 温馨瞬间引关注

赵文卓全家观看凤凰传奇演唱会的视频近日在网络上引发热议,展现了功夫巨星私下里充满生活气息的一面。赵文卓与妻子张丹露是娱乐圈中的模范夫妻,他们育有三个孩子:大女儿17岁,小女儿7岁,儿子则在瑞士留学。六一儿童节当天,赵文卓在社交平台分享了全家观看演唱会的视频,尽…

小语种导游需求市场激增 免签政策带动旅游热

免签政策的频繁推出促进了“中国游”的热度,上海凭借其独特的历史韵味和现代化气息,吸引了大量外国游客。在浦东国际机场边检入境大厅,越来越多的外国旅客通过免签政策来到上海,走进中国。据上海边检总站数据,今年以来,入境的外籍旅客中近六成是来旅游观光的,其中韩国、…

【AI面试秘籍】| 第25期:RAG的关键痛点及解决方案深度解析

今天我们来聊聊大模型领域一个非常火热的技术——RAG&#xff08;Retrieval Augmented Generation&#xff09;。RAG通过引入外部知识库&#xff0c;有效地缓解了大型语言模型&#xff08;LLM&#xff09;在处理知识密集型任务时可能出现的幻觉、知识过时等问题。然而&#xff…

26考研——文件管理_文件系统(4)

408答疑 文章目录 三、文件系统1、文件系统架构1.1、文件系统的基本概念1.2、文件系统结构1.3、文件系统布局1.3.1、文件系统在磁盘中的结构1.3.2、文件系统在内存中的结构 1.4、虚拟文件系统 2、磁盘空间管理2.1、空闲表法2.2、空闲链表法2.3、位示图法2.4、成组链接法 五、参…

Trae AI编程创意实践-DIY粽子应用

创意背景 最近恰逢端午假期&#xff0c;我就萌生了一个想法&#xff0c;能否用AI IDE来帮我实现一个DIY粽子应用&#xff0c;能够制作不同口味和形状的粽子。 过去你如果要实现同样的功能成本或许会非常高&#xff0c;比如你需要学习掌握前端相应的技术栈和完成线上部署解决云…

在Amazon Q辅助下,半小时开发了一个俄罗斯方块游戏

大家好&#xff0c;我是晓凡 写在前面 在AI的辅助下&#xff0c;晓凡基于HTML、CSS和JavaScript 开发了简单的俄罗斯方块游戏。 小伙伴们可直接跳转文末获取源码。 一、最终效果 二、功能特点 7种经典方块形状&#xff08;I/O/T/S/Z/L/J&#xff09;键盘控制&#xff08;方…

14.Wifi模组(ESP8266)

目录 WIFI 模组讲解 WIFI 模组和 TCP/IP 的关系 常见的 WIFI 模组ESP8266 ESP8266 相关 AT 指令集介绍 AT 指令集的格式 指令分类 1 指令分类 2 与 ESP8266 通信&#xff0c;串口参数如何配置 ESP8266WIFI 设置 3 种无线通信模式&#xff1a; 开发板相关的硬件电路 作为…

13.三种低功耗和RTC实时时钟

目录 低功耗 低功耗的目的 如何降低功耗 如何测量功耗 STM32 中的电源系统 后备供电区域如何实现始终有电 STM32 中的低功耗 睡眠模式 停止模式 待机模式 三种低功耗模式的编程 睡眠模式 停止模式 待机模式 RTC 实时时钟 RTC 实时时钟的作用 实现实时时钟的必要硬件 …

海军舰艇编队辗转多海域实战化演练 锤炼协同作战能力

南部战区海军某训练中心联合某驱逐舰支队组织渭南舰、玉林舰等多艘舰艇,辗转多个海域,展开多个课目训练,检验编队协同作战能力和指挥员决策水平。在编队航行途中,突然接到上级通报,当前活动海区有“敌”无人艇活动,各舰立即进入战斗状态。渭南舰雷达战位迅速发现并上报不…

贾冰瘦脱相 压力给到沈腾 明星瘦身潮引发热议

5月31日,演员贾冰的妻子发布了一段视频,祝福大家端午节快乐,并配文“从此我家多了个瘦子”。在两人合影中,贾冰明显瘦了很多,评论区里大家都在询问他如何瘦下来的。贾冰妻子回复说,主要是通过少吃多运动的方式,甚至一天只吃一顿饭。贾冰本人也在评论区开玩笑说:“一次少…

PyTorch实战——基于生成对抗网络生成服饰图像

PyTorch实战——基于生成对抗网络生成服饰图像 0. 前言1. 模型分析与数据准备2. 判别器3. 生成器4. 模型训练5. 模型保存与加载相关链接 0. 前言 我们已经学习了生成对抗网络 (Generative Adversarial Network, GAN) 的工作原理&#xff0c;接下来&#xff0c;将学习如何将其应…

C++四种类型转换方式

const_cast,去掉&#xff08;指针或引用&#xff09;常量属性的一个类型转换,但需要保持转换前后类型一致static_cast,提供编译器认为安全的类型转换(最常使用)reinterpret_cast,类似于c语言风格的强制类型转换&#xff0c;不保证安全;dynamic_cast,主要用于继承结构中&#xf…

得物C++开发面试题及参考答案

HTTP/HTTPS 协议的区别及 HTTPS 加密过程 HTTP&#xff08;超文本传输协议&#xff09;是一种用于传输超文本的协议&#xff0c;它是明文传输的&#xff0c;这意味着数据在传输过程中容易被截取和篡改&#xff0c;存在较大的安全隐患。而 HTTPS&#xff08;超文本传输安全协议…