Java面试深度解析:MyBatis、SpringBoot与MySQL核心知识点

需积分: 5 4 下载量 189 浏览量 更新于2024-06-17 1 收藏 5.66MB DOCX 举报
"Java面试题、MyBatis、SpringBoot、MySQL数据库的相关知识点" 这篇Java面试八股文的总结涵盖了多个重要领域,包括Java基础、MyBatis框架、SpringBoot微服务以及MySQL数据库。以下是对这些知识点的详细阐述: 1. **MyBatis** - **Xml映射文件**:除了基本的`select|insert|update|delete`标签,还有如`<resultMap>`, `<association>`, `<collection>`, `<parameterMap>`, `<result>`等,用于定义结果映射、关联关系、参数映射等。 - **一对一映射**:MyBatis通过`<association>`标签实现一对一,可以配置`property`, `javaType`, `column`, `select`等属性来指定关联的字段和查询方法。 - **延迟加载**:MyBatis支持二级缓存,延迟加载是在需要时才执行关联查询,减少对数据库的访问,实现原理是通过代理机制在第一次访问属性时加载数据。 - **缓存机制**:MyBatis有一级缓存(SqlSession级别)和二级缓存(Mapper级别),缓存数据结构通常是HashMap,遵循LRU(Least Recently Used)策略。 2. **JDBC编程**: - JDBC编程通常包括加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL、处理结果集、关闭资源等步骤。 3. **MyBatis设计模式**: - MyBatis使用了工厂模式(SqlSessionFactoryBean)、代理模式(MapperProxy)和单例模式等设计模式。 4. **SpringBoot** - **核心注解**:`@SpringBootApplication`,由`@SpringBootConfiguration`, `@EnableAutoConfiguration`, `@ComponentScan`组成,简化项目初始化。 - **启动方式**:可直接运行主类,或者打包成jar/war文件通过命令行或容器启动。 - **Starters**:是一系列预先配置的依赖集合,方便快速构建应用,如`spring-boot-starter-web`。 - **启动代码**:可以通过`CommandLineRunner`或`ApplicationRunner`接口实现启动时执行的代码。 5. **MySQL** - **三范式**:第一范式(1NF)、第二范式(2NF)、第三范式(3NF),是数据库设计的基本原则,确保数据无冗余和依赖规范。 - **数据库引擎**:InnoDB和MyISAM是最常见的,InnoDB支持事务,MyISAM不支持;InnoDB使用行级锁定,MyISAM使用表级锁定。 - **事务隔离级别**:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)、串行化(SERIALIZABLE),MySQL默认为可重复读。 6. **数据库优化** - **索引**:提高查询速度,包括B-Tree、Hash、R-Tree等类型,创建索引需考虑选择合适的字段和排序方式。 - **SQL优化**:避免全表扫描,合理使用JOIN,避免子查询,使用合适的数据类型,优化事务处理等。 - **表优化**:分页查询、读写分离、垂直分区(列裁剪)和水平分区(行划分)等方法。 这份面试总结全面地覆盖了Java开发人员在面试中可能遇到的关键问题,对于求职者来说是宝贵的复习资料。通过深入理解和掌握这些知识点,将有助于在面试中表现出色。