Java+SpringBoot核心知识点整合一
Java+SpringBoot核心知识点整合一
一、HTTP请求方式
| 请求方式 | 用途 | 特点 |
|---|---|---|
| GET | 查询数据 | 参数拼接在URL后,安全性差 |
| POST | 新增数据 | 参数放在请求体中 |
| PUT | 全量修改 | 替换整个资源 |
| PATCH | 局部修改 | 修改部分字段 |
| DELETE | 删除数据 | 无 |
注:HEAD、OPTIONS、CONNECT、TRACE在实际开发中极少使用,了解即可。
二、@符号的语义区分
核心规则:
- 顶格书写 = 注解:如
@RestController、@Service、@Mapper、@Select - 写在引号内 = 路径/变量:如
@GetMapping("/user/{id}")中的/user/{id}
判断方法:看该符号是否出现在字符串字面量内部。
三、MyBatis核心知识点
@Mapper
- 作用:标记Mapper接口,MyBatis自动生成实现类
- 效果:开发者无需手写数据库操作的实现代码
@Select / @Insert / @Update / @Delete
- 作用:在Mapper接口方法上直接编写SQL语句
- 规则:
- SQL由开发者手写,语法错误直接报错,框架不做修正
- Mapper接口只包含方法声明和SQL注解,实现类由框架自动生成
MyBatis能力边界
- 能做:纯CRUD数据库操作
- 不能做:业务逻辑判断、密码加密、数据格式转换、多表复杂逻辑(应放在Service层处理)
四、SpringBoot自动创建对象注解
| 注解 | 作用 | 层级 |
|---|---|---|
| @RestController | 标记控制层类,处理前端请求 | Controller |
| @Service | 标记业务层实现类 | ServiceImpl |
| @Repository | 标记持久层类 | 持久层 |
| @Component | 标记通用工具类 | 任意层 |
| @Mapper | 标记MyBatis接口 | 持久层 |
| @Bean | 将第三方类手动注册到容器 | 配置类 |
五、分层架构(核心流程)
1 | 前端 → Controller → Service接口 → ServiceImpl实现类 → Mapper → 数据库 |
各层职责
Controller层:
- 仅与前端交互
- 只调用Service接口方法
- 不包含业务逻辑
Service接口层:
- 定义方法签名
- 不编写具体实现
- 起到规范作用
ServiceImpl实现类:
- 实现接口中定义的所有方法
- 编写全部业务逻辑
- 调用Mapper接口操作数据库
Mapper持久层:
- 执行SQL语句
- 操作数据库表
六、面向接口编程的意义
为什么不直接Controller调用ServiceImpl?
- 解耦:Controller依赖于抽象接口而非具体实现
- 多态扩展:同一接口可存在多个实现类(如普通用户、VIP用户)
- 无侵入切换:切换业务逻辑时,Controller代码无需修改
- 可维护性:便于测试、后期维护和功能扩展
七、@Override注解的作用
- 标记重写:表明当前方法是对接口方法或父类方法的重写
- 编译校验:方法名、参数类型或数量写错时,IDE直接报错
- 代码规范:提高可读性,便于其他开发者识别重写方法
八、DTO数据传输对象
概念对比
- Entity(实体类):与数据库表结构一一对应
- DTO(数据传输对象):专用于前后端数据交互
必要性
- 正式项目:必须使用DTO,用于隐藏敏感字段(如密码)、适配前端参数格式
- 练手项目:可直接使用Entity,简化开发流程
核心作用
隔离前端与数据库,提高系统安全和代码规范性。
九、实现类通俗理解
- 接口:定义规则,仅包含方法签名,不可直接运行
- 实现类:遵循接口规则,编写实际业务代码
开发技巧:使用IDEA快捷键 Alt + Enter 可快速生成接口方法的实现骨架。
十、总结
- Mapper接口配合@Mapper注解:框架自动生成数据库操作代码
- Service接口定义规范,ServiceImpl编写业务逻辑
- Controller仅负责前端交互,不涉及业务和数据库
- 添加注解的类由Spring自动管理,通过@Autowired依赖注入使用
- SQL手工编写,业务逻辑手工实现,重复的数据库操作代码由框架代劳
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 且听风吟!
评论
