用户管理系统 03 搭建基本结构 | Java新手实战 | 最小架构用户管理系统(SpringBoot+Vue3)

B站视频-用户管理系统 03 搭建基本结构

掌握标准项目结构,为后续开发打下坚实基础

本文是用户管理系统实战系列的第三篇,专门针对Java新手讲解如何搭建标准的SpringBoot项目结构。我们将采用最小可行架构,确保结构清晰、易于理解和扩展。

🎯 本章学习目标

  • ✅ 理解标准SpringBoot项目结构
  • ✅ 掌握各层级的职责划分
  • ✅ 学会文件组织的正确方式
  • ✅ 为后续功能开发做好准备

🏗️ 项目结构规划

标准目录结构

复制代码
user-management/
├── src/
│   └── main/
│       ├── java/
│       │   └── com/
│       │       └── jackson/
│       │           └── usermanager/
│       │               ├── controller/     # 控制层
│       │               ├── service/        # 业务层
│       │               ├── mapper/         # 数据访问层
│       │               └── domain/         # 实体类
│       └── resources/
│           ├── mapper/      # MyBatis映射文件
│           ├── application.yml     # 配置文件
│           └── static/      # 静态资源
└── pom.xml                  # Maven依赖配置

🔧 详细文件结构说明

1. 控制层(Controller)- 接收请求

位置src/main/java/com/jackson/usermanager/controller/

UserController.java

2. 业务层(Service)- 处理业务逻辑

位置src/main/java/com/jackson/usermanager/service/

UserService.java(接口)

UserServiceImpl.java(实现类)

3. 数据访问层(Mapper)- 数据库操作

位置src/main/java/com/jackson/usermanager/mapper/

UserMapper.java

4. 实体类(Domain)- 数据模型

位置src/main/java/com/jackson/usermanager/model/domain/

User.java

java 复制代码
package com.jackson.usermanager.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;

@Data
@TableName("user")
public class User {
    
    @TableId(type = IdType.AUTO)
    private Integer id;
    
    // 用户昵称
    private String nickName;
    
    // 密码(加密存储)
    private String pwd;
    
    // 手机号(唯一)
    private String phone;
    
    // 角色:0-普通用户,1-管理员
    private Integer role;
    
    // 状态:0-正常,1-删除
    private Integer status;
    
    // 创建时间(自动填充)
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    
    // 更新时间(自动填充)
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

5. 配置文件目录

位置src/main/resources/

application.yml

yaml 复制代码
#Spring相关
spring:
  application:
    name: user-manager
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/user-manager
    username: root
    password: 123456

#服务相关
server:
  port: 8080
  servlet:
    context-path: /api

mapper/UserMapper.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jackson.usermanager.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.jackson.usermanager.model.domain.User">
            <id property="id" column="id" />
            <result property="nick_name" column="nick_name" />
            <result property="pwd" column="pwd" />
            <result property="phone" column="phone" />
            <result property="role" column="role" />
            <result property="status" column="status" />
            <result property="create_time" column="create_time" />
            <result property="update_time" column="update_time" />
    </resultMap>

    <sql id="Base_Column_List">
        id,nick_name,pwd,phone,role,status,
        create_time,update_time
    </sql>
</mapper>

🚀 实际操作步骤

第一步:创建包结构

在IDEA中按照以下顺序创建包:

  1. 右键src/main/java目录 → New → Package
  2. 逐级创建包
    • com.jackson.usermanager
    • 在该包下创建:controller, service, service.impl, mapper, mode.domain

第二步:启动类添加扫描mapper

位置src/main/java/com/jackson/usermanager/

UserManagerApplication.java

java 复制代码
......
@SpringBootApplication
@MapperScan("com.jackson.usermanager.mapper")
public class UserManagerBackendApplication {
    ......
}

🌟 架构设计理念

分层架构的优势

复制代码
用户请求 → Controller → Service → Mapper → 数据库
    ↑          ↑           ↑         ↑         ↑
    │          │           │         │         │
视图交互   请求处理    业务逻辑   数据操作   数据存储

各层职责明确

层级 职责 关注点
Controller 接收请求,返回响应 参数校验、结果封装
Service 业务逻辑处理 事务管理、业务规则
Mapper 数据持久化操作 SQL执行、结果映射
Domain 数据载体 数据结构、验证规则

🔍 新手常见问题解答

❓ 为什么要分这么多层?

:分层让代码结构清晰,每层只关注自己的职责,便于维护和测试。

❓ Service接口和实现类都要创建吗?

:是的,这是面向接口编程的体现,便于后续扩展和Mock测试。

❓ 包名为什么要用域名倒写?

:这是Java包命名规范,确保全球唯一性,避免冲突。

❓ 实体类为什么放在domain包?

:domain包通常存放领域模型,体现业务实体概念。

📝 代码规范建议

命名规范

  • ✅ 类名使用大驼峰:UserController
  • ✅ 方法名使用小驼峰:getUserById
  • ✅ 包名全部小写:com.jackson.usermanager

注解使用规范

java 复制代码
// Controller层注解
@RestController
@RequestMapping("/api/user")

// Service层注解  
@Service

// Mapper层注解
@Mapper

// 依赖注入注解
@Autowired 或 @RequiredArgsConstructor

🎯 下一步学习预告

第四篇:用户登录功能


💫 本章总结

通过本章学习,我们完成了:

  • ✅ 标准SpringBoot项目结构搭建
  • ✅ 各层级代码文件的创建和组织
  • ✅ 理解分层架构的设计理念
  • ✅ 基础业务逻辑代码编写

💡 实践建议:按照文章步骤亲手搭建项目结构,理解每个文件的作用!

📌 下篇预告:我们将开始实现具体的业务功能,首先完善用户登录功能。准备好你的开发环境,我们下次见!


💬 互动话题:你在搭建项目结构时遇到过哪些问题?或者对哪个层级的职责不太清楚?欢迎在评论区交流讨论!

相关推荐
k***1951 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
n***84071 小时前
Spring Boot(快速上手)
java·spring boot·后端
组合缺一1 小时前
Solon AI 开发学习3 - chat - 模型配置与请求选项
java·学习·ai·chatgpt·langchain·solon
小兔崽子去哪了1 小时前
Docker部署ZLMediaKit流媒体服务器并自定义配置指南
java·后端·容器
程序猿小蒜1 小时前
基于springboot的人口老龄化社区服务与管理平台
java·前端·spring boot·后端·spring
Caarlossss1 小时前
jdbc学习
java·开发语言·学习·http·tomcat·maven
Coder-coco2 小时前
个人健康系统|健康管理|基于java+Android+微信小程序的个人健康系统设计与实现(源码+数据库+文档)
android·java·vue.js·spring boot·微信小程序·论文·个人健康系统
断剑zou天涯2 小时前
【算法笔记】从暴力递归到动态规划(二)
java·算法·动态规划
Boop_wu2 小时前
[Java EE] 多线程编程初阶
java·jvm·算法