一、核心定位Controller 控制器属于经典MVC 架构里的CController是整个项目对外的入口层。 简单一句话接收前端 / 第三方请求分发处理返回结果。二、具体能干什么1. 接收 HTTP 请求前端页面、小程序、APP、Postman 发的接口请求GET/POST/PUT/DELETE全部先进到 Controller。接收路径地址RequestMapping、GetMapping定义接口 URL接收参数路径参数PathVariable请求体 JSONRequestBody表单 / 查询参数RequestParam2. 调用业务层 ServiceController不写业务逻辑只做调度 拿到请求参数 → 校验基础参数 → 调用Service层方法处理业务 → 拿到返回数据。3. 封装并返回响应结果统一包装成固定格式 JSON 返回给前端例如{ code: 200, msg: 操作成功, data: { ... } }4. 简单参数校验与请求拦截对必填参数、参数格式做基础校验配合注解实现登录校验、权限判断、接口限流等前置拦截。三、层级分工对照整个项目结构层级职责能不能写业务Controller 控制层接请求、调 Service、返回数据绝对禁止在Controller、Service中直接写SQL所有数据库操作必须通过MapperMybatis实现。❌ 禁止复杂业务不能写业务、不能写 SQL。 只干接参数、调 Service、返回结果。Service 业务层核心业务逻辑、流程处理绝对禁止在Controller、Service中直接写SQL所有数据库操作必须通过MapperMybatis实现。✅ 主要写业务专门写核心业务逻辑判断、流程、计算、事务是项目的大脑。Mapper/DAO 数据层操作数据库增删改查该目录是Mybatis 框架的专属层承担项目所有数据库读写工作完全对应JDBC数据操作职责是Service层和数据库之间的桥梁❌ 只写 SQL不能写业务逻辑。 只干数据库增删改查、执行 SQL。Entity/Model数据库实体类Entity实体类仅用来映射数据库表字段不属于Mybatis核心操作层❌ 存字段不能写逻辑、不能写 SQL。 只干定义字段对应数据库表。四、典型目录结构示例SpringBoot 项目前端请求 → Controller接收请求→ Service处理业务→MapperMybatis执行SQL→ 数据库src/main/java/com/xxx/project ├── controller # 所有接口控制器放这里 │ ├── UserController.java │ ├── OrderController.java ├── service │ ├── impl # service实现类 ├── mapper ├── entity五、通俗举例你在浏览器访问localhost:8080/user/get/11、请求先进入UserController2、Controller 拿到用户 id13、调用userService.getUserById(1)4、Service 调用 Mapper 查询数据库5、数据一层层回传到 Controller6、Controller 打包 JSON 发给浏览器展示。六、编码规范要点6.1、Controller 只依赖 Service绝对不能直接调用 Mapper6.2、一个业务模块对应一个 Controller用户、订单、商品分开6.3、不写事务、不写复杂判断只做请求转发与结果封装。