文章目录前言一、先看整体项目树二、根目录文件逐个讲解1. pom.xml ⭐【整个项目最重要文件】2. target 文件夹 【千万不要在这里写代码】3. mvnw / mvnw.cmd4. .gitignore5. .idea三、src目录后端开发主战场3.1 src/main/java 【Java代码层】✅ BadHabbitApplication.java —— 项目启动类✅ entity 实体包模型层✅ mapper 数据访问层DAO层✅ controller 控制器接口层✅ config 配置包3.2 src/main/resources 资源文件夹✅ application.yml ⭐核心配置文件✅ mapper 文件夹✅ static 静态资源文件夹✅ templates四、完整请求链路带你打通前后端流程五、新手开发规范总结避坑指南六、写在最后前言很多刚学Java后端的同学打开别人的SpringBoot项目直接一脸懵.idea、src、target、controller、mapper……一堆文件夹密密麻麻不知道哪个能改、哪个碰都不能碰不知道代码写在哪分不清接口、数据库代码放哪里新建功能不知道该创建什么类今天拿一套最基础、最常用的SpringBoot MyBatis实战项目带大家拆解目录结构。看完这篇你拿到任何同款后端项目一眼看懂每个文件夹的职责告别“瞎复制代码”项目架构标准MVC后端项目提供接口给前端页面/小程序使用一、先看整体项目树bad_habbit # 项目根文件夹 ├── .idea # IDEA编辑器配置 ├── .mvn # maven自动化构建相关 ├── src # 【核心源代码目录我们99%代码写在这里】 │ └── main │ ├── java # Java业务代码 │ │ └── com.example.bad_habbit │ │ ├── config # 全局配置类 │ │ ├── controller # 接口控制器前后端交互入口 │ │ ├── entity # 数据库实体类 │ │ ├── mapper # 数据库操作接口 │ │ └── BadHabbitApplication # 项目启动类 │ └── resources # 配置文件、SQL映射、静态资源 │ ├── application.yml # SpringBoot核心配置文件 │ ├── mapper # Mybatis SQL文件 │ ├── static # 静态页面(html/js/css/图片) │ └── templates # 模板页面较少用 ├── test # 单元测试目录 ├── target # 编译输出文件夹 ├── pom.xml # Maven项目核心配置 ├── .gitignore # Git忽略配置 ├── mvnw/mvnw.cmd # Maven启动脚本二、根目录文件逐个讲解1. pom.xml ⭐【整个项目最重要文件】Maven项目的灵魂作用管理项目所有依赖包。你项目想要连接MySQL、使用MyBatis、SpringBoot框架全部都需要在这个文件引入依赖。简单理解你想要什么工具就在pom.xml里面“申请”Maven自动帮你下载对应的jar包。2. target 文件夹 【千万不要在这里写代码】执行项目编译后自动生成。Java源代码会被编译成.class文件最终打包的jar包也在这里。程序真正运行的时候执行的就是target里面编译后的代码。常见坑修改代码不生效很多人误改target内文件重启项目直接覆盖附带目录里hs_err_pidxxx.log文件JVM崩溃日志如果程序莫名闪退可以打开日志排查问题。3. mvnw / mvnw.cmdMaven包装脚本。正常开发我们电脑安装了Maven基本用不到如果别人电脑没有配置Maven可以直接运行这个脚本自动下载maven构建项目。mvnwMac/Linux系统mvnw.cmdWindows系统4. .gitignoreGit版本控制忽略清单。写在这里的文件/文件夹执行代码提交时不会上传到Gitee/GitHub。典型配置忽略target、.idea缓存文件避免上传大量无用缓存。5. .ideaIDEA开发工具自动生成的文件夹保存你的界面布局、运行配置、代码索引。和业务代码无关上传代码一般都会忽略。三、src目录后端开发主战场src source源代码我们日常写业务代码全部在这个文件夹分为两大块src/main正式环境运行的业务代码src/test单元测试代码写测试用例测试接口、方法3.1 src/main/java 【Java代码层】包路径com.example.bad_habbit✅ BadHabbitApplication.java —— 项目启动类整个SpringBoot项目唯一入口带有SpringBootApplication核心注解。右键运行这个类的main方法后端服务直接启动开启端口等待前端发送请求。✅ entity 实体包模型层存放实体类比如示例里Habbit.java规则一个类对应数据库一张表类的属性对应数据表字段。作用数据库查询出来的数据全部封装到实体对象中方便代码读取、传递数据。别名POJO、实体、数据表映射类。✅ mapper 数据访问层DAO层里面HabbitMapper是Java接口职责定义操作数据库的方法新增、删除、修改、查询。⚠️重点接口不写SQL实现SQL语句统一写在 resources/mapper对应的xml文件由MyBatis框架自动实现。✅ controller 控制器接口层前后端交互的大门前端网页、小程序、APP发起http请求都会访问Controller里面定义的接口地址。简单流程接收前端请求 → 调用mapper操作数据库 → 查询/修改数据 → 返回数据给前端页面小贴士正规企业项目还会多出一层service业务层把复杂业务逻辑抽离出来。小型项目可以简化Controller直接调用Mapper。✅ config 配置包存放所有自定义配置类示例里CorsConfig跨域配置前端页面和后端端口不一致时浏览器会拦截跨域请求这个配置放开限制让前端正常调用后端接口。后续还可以在这里添加登录拦截器、MyBatis分页配置、线程池配置等。3.2 src/main/resources 资源文件夹不会编译成class文件打包时直接复制到项目中。✅ application.yml ⭐核心配置文件SpringBoot全局配置中心常见配置内容后端服务启动端口默认8080MySQL数据库地址、账号、密码MyBatis配置、日志级别、文件上传大小限制等✅ mapper 文件夹存放MyBatis映射文件HabbitMapper.xml和mapper包下的接口一一对应所有SQL语句select/insert/update/delete全部写在这里。✅ static 静态资源文件夹SpringBoot内置静态资源目录html网页、js、css、图片都可以放这里。示例中的index.html前端页面启动项目后直接通过http://localhost:8080/index.html访问。✅ templatesThymeleaf模板文件夹。如果不用模板引擎开发页面这个文件夹可以闲置。四、完整请求链路带你打通前后端流程看完目录很多人还是不知道代码怎么联动给大家梳理一条完整流程前端打开 index.html → 网页发送请求GET /habbit/listHabbitController 接收前端请求Controller调用 HabbitMapper 里面的查询方法MyBatis加载 HabbitMapper.xml 中定义的查询SQL程序连接MySQL数据库执行SQL查询到的数据自动封装进 Habbit 实体对象Controller把数据返回前端网页渲染展示数据一条请求走完所有分层这下各个包的作用彻底串起来了。五、新手开发规范总结避坑指南新增数据表 → 创建entity实体类需要操作这张表 → 创建Mapper接口 Mapper.xml编写SQL需要给前端提供访问地址 → 在Controller新增接口通用全局功能跨域、拦截器写到configtarget、.idea 不要手动修改、不要上传代码仓库六、写在最后很多新手学习后端一上来就死磕各种框架源码却连项目目录结构都搞不清楚。地基没打好写代码只会东拼西凑遇到报错无从下手。搞懂目录分层思想不只是SpringBoot后续学习微服务、SpringCloud分层思想都是通用的如果文章对你有帮助点赞收藏后续持续更新SpringBoot实战小案例配套详细目录解析博文SpringBoot4 MyBatis 前后端分离实战从零实现坏习惯管理系统支持局域网手机访问CRUD你们刚学后端的时候哪个文件夹最让你迷惑评论区留言