当前位置: 首页 > news >正文

SSM拷打最后一讲!!!

13. SpringMVC常见的注解有哪些?

SpringMVC 常见注解我一般按功能记。

请求映射相关有:
@RequestMapping
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping

参数获取相关有:
@RequestParam
@PathVariable
@RequestBody
@RequestHeader

响应相关有:
@ResponseBody
@RestController

14. Springboot 常见注解有哪些?

Spring Boot 常见注解我会按场景分。

最核心的是@SpringBootApplication,它是启动类注解,里面包含@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan,其中@EnableAutoConfiguration是自动配置的核心。

配置读取方面,常用@Value读取单个配置项,@ConfigurationProperties批量绑定配置属性。

自动配置里还会经常看到条件注解,比如@ConditionalOnClass@ConditionalOnMissingBean@ConditionalOnProperty,它们决定某个自动配置或 Bean 是否生效。

如果是 Web 项目,也会常用@RestController@GetMapping@PostMapping这些,但它们更准确说属于 SpringMVC 注解,只是在 Spring Boot 项目里很常见。

15. MyBatis执行流程?

读配置->解析成mappedstatement->构建出sqlsessionfactory->sqlsession获取代理对象-> 找对应的mappedstatement->executor->jdbc->映射成对象

MyBatis 的执行流程我会分成初始化和真正执行 SQL 两段。

初始化时,MyBatis 会读取全局配置文件和 Mapper XML,解析成一个个MappedStatement,里面包含 SQL、参数映射、结果映射这些信息,然后构建出SqlSessionFactory

真正执行时,我们先通过SqlSession获取 Mapper 接口的代理对象。调用 Mapper 方法时,代理对象会根据接口全限定名和方法名,找到对应的MappedStatement。然后交给Executor执行器处理。

执行过程中,MyBatis 会把方法参数映射到 SQL 里的占位符,底层通过 JDBC 执行 SQL。查询完成后,再把ResultSet结果集按照配置或实体字段映射成 Java 对象返回

16. Mybatis是否支持延迟加载?原理呢?

支持->用在哪->体现在哪->原理

MyBatis 支持延迟加载,主要用于关联查询,比如一对一的association或一对多的collection。开启后,主对象查询出来时,不会马上把关联对象都查出来,而是在真正访问关联属性时再执行对应 SQL。

底层原理主要是动态代理。MyBatis 会给需要延迟加载的关联对象生成代理对象,当调用这个代理对象的方法时,代理会触发额外查询,通过 SqlSession 执行 SQL,把关联数据加载出来并返回。

这里要注意,延迟加载不是简单判断属性是不是 null,而是通过代理拦截访问行为来触发查询。

17. Mybatis的一级、二级缓存用过吗?

作用域->例子

MyBatis 一级缓存我用得比较多,它是默认开启的,作用域是同一个SqlSession。也就是说,在同一个SqlSession里,如果执行相同 SQL、参数也一样,第二次查询可能直接从一级缓存拿,不再查数据库。但只要执行了增删改,或者提交、回滚、关闭SqlSession,一级缓存就会被清掉。

二级缓存我了解过,但项目里一般比较谨慎使用。它是 Mapper,也就是 namespace 级别的缓存,需要手动开启,多个SqlSession可以共享。但是它有一致性风险,尤其是多表查询或者数据更新比较频繁时,很容易出现缓存和数据库不一致。所以实际项目里,我们更多会用 Redis 做业务缓存,而不是依赖 MyBatis 二级缓存。

18. Mybatis的二级缓存什么时候会清理缓存中的数据?

当某个 Mapper (namespace) 下执行新增、修改、删除操作时,默认会清空该 namespace 下的二级缓存,避免后续 select 读到旧数据。

http://www.jsqmd.com/news/923286/

相关文章:

  • pyqt5实现一个完整的媒体播放器(亲测可用)
  • Arduino Micro硬件SPI驱动ST7735屏幕:引脚定义与连接指南
  • ChatTTS-ui音色工程革命:从参数调试到场景化语音合成的技术实践
  • Zotero Duplicates Merger:终极文献去重解决方案完全指南
  • 三步掌握WeChatMsg:永久保存你的微信聊天记忆
  • 鸣潮自动化辅助工具:基于YOLOv8图像识别的智能游戏助手技术解析
  • 基于Arduino与TCS3200的颜色识别系统:从原理到实践
  • Linux包管理器的隐藏技能:用DNF/Yum下载RPM包,像搭积木一样管理你的软件仓库
  • 2026衢州市防水补漏公司权威推荐:卫生间、阳台、屋顶、地下室、飘窗、外墙漏水,专业防水公司TOP5口碑榜+全维度测评(2026年6月最新深度行业资讯) - 防水百科
  • AtlasOS深度解析:Windows性能优化与隐私保护架构剖析
  • GetQzonehistory终极指南:5分钟永久备份QQ空间所有历史记录
  • UVa 349 Transferable Voting (II)
  • 太原红龙泰贸易:运城专业的焊管批发公司推荐几家 - LYL仔仔
  • 技术、社会与未来的十字路口:从业者观察与思考
  • 5个实战场景:用ChatTTS-ui找到最适合你的语音合成方案
  • 3个步骤让Mac鼠标滚动如触控板般顺滑:Mos滚动优化终极指南
  • Win10激活失败?可能是你的批处理脚本过期了!保姆级排查与服务器地址更新指南
  • 拱墅 / 滨江 / 西湖杭州代理记账公司推荐,本地老牌财税视界凯信优势盘点 - 玖叁鹿
  • 屏幕保护膜光学优化技术白皮书:基于圆偏振光与磁控溅射AR镀膜的反射率≤0.5%方案解析
  • 049、弱监督 YOLO 训练:只有图像级标签怎么训练检测模型的方案探索
  • 抖音视频怎么保存到相册无水印?2026年四款工具完整操作指南 - 科技大爆炸
  • 2026大连市防水补漏公司权威推荐:卫生间、阳台、屋顶、地下室、飘窗、外墙漏水,专业防水公司TOP5口碑榜+全维度测评(2026年6月最新深度行业资讯) - 防水百科
  • 基于NE555与Arduino的简易电子钢琴制作:从模拟振荡到数字控制
  • 华硕笔记本终极性能优化:G-Helper完整使用指南与降压超频技巧
  • 告别双击安装失败!统信UOS ARM架构下Citrix客户端命令行安装全指南
  • 3步实现智慧教育平台教材批量下载:告别繁琐操作的高效解决方案
  • 英语阅读_a T-shirt for the school Arts Festival
  • 2026实测:专业降AIGC平台首选方案 - 降AI小能手
  • 3天重构用户分层体系:基于Gemini原生Embedding向量聚类的无监督分层法,准确率提升至89.6%
  • 为什么你的Gemini微调任务在v2.5.1后失败率飙升?——基于127家客户日志的错误码分布热力图分析