用户管理系统 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项目结构搭建
  • ✅ 各层级代码文件的创建和组织
  • ✅ 理解分层架构的设计理念
  • ✅ 基础业务逻辑代码编写

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

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


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

相关推荐
墨夶1 分钟前
交易所安全保卫战:从冷钱包到零知识证明,让黑客连边都摸不着!
java·安全·区块链·零知识证明
山风wind4 分钟前
Tomcat三步搭建局域网文件共享
java·tomcat
a努力。5 分钟前
网易Java面试被问:偏向锁在什么场景下反而降低性能?如何关闭?
java·开发语言·后端·面试·架构·c#
小新11016 分钟前
Spring boot 之 Hello World 番外:如何修改端口号
java·spring boot·后端
百花~20 分钟前
Spring Boot 日志~
java·spring boot·后端
李白的粉26 分钟前
基于springboot的火锅店管理系统(全套)
java·spring boot·毕业设计·课程设计·源代码·火锅店管理系统
狂奔小菜鸡26 分钟前
Day32 | Java Stream流式编程详解
java·后端·java ee
雨中飘荡的记忆32 分钟前
Canal深度解析:MySQL增量数据订阅与消费实战
java
hhzz33 分钟前
Activiti7工作流(五)流程操作
java·activiti·工作流引擎·工作流
慧都小项35 分钟前
JAVA自动化测试平台Parasoft Jtest 插件Eclipse/IDEA安装教程
java·软件测试·测试工具·eclipse·intellij-idea