Java八股文のMyBatis Plus
- [MyBatis Plus](#MyBatis Plus)
MyBatis Plus
- MyBatis Plus 是什么?它与 MyBatis 有什么区别?
MyBatis Plus 是基于 MyBatis 进行扩展的一款持久层框架,它提供了一系列增强功能,简化了 MyBatis 的使用。
与 MyBatis 相比,MyBatis Plus 提供了更多的便利特性,如自动生成代码、简化 CRUD 操作、分页查询等。
- MyBatis Plus 的主要特性是什么?
MyBatis Plus 的主要特性包括:
代码生成器、通用 CRUD 操作、分页查询、逻辑删除、自动填充、性能分析、多租户等。
- MyBatis Plus 中最常用的注解是什么?它们的作用是什么?
在 MyBatis Plus 中,最常用的注解是 @TableName 和 @TableId 。
@TableName 用于标注实体类对应的数据库表名;
@TableId 用于标注实体类中主键字段。
- MyBatis Plus 如何进行分页查询?
MyBatis Plus 提供了 Page 类用于分页查询。
通过调用 Page 对象的静态方法 Page<T> page(long current, long size) ,可以指定当前页和每页大小。
然后通过传递 Page 对象到查询方法中,实现分页查询功能。
- MyBatis Plus 如何实现简单的 CRUD(增删改查)操作?
MyBatis Plus 提供了 BaseMapper 接口,通过继承该接口,即可获得一些默认的 CRUD 方法,如 insert 、updateById 、deleteById 、selectById 等。
- MyBatis Plus 是如何处理查询结果和实体类之间的映射关系的?
MyBatis Plus 会根据数据库表和实体类的字段进行自动映射。
如果字段名和属性名一致,可以直接映射;
如果不一致,可以使用 @TableField 注解标注数据库列名。
- MyBatis Plus 中的逻辑删除是什么?如何配置和使用逻辑删除?
逻辑删除是指在数据库中标记一条记录为删除状态,而不是真正地删除它。
MyBatis Plus 提供了 @TableLogic 注解来实现逻辑删除,需要在实体类中标注逻辑删除字段,并通过配置开启逻辑删除功能。
- MyBatis Plus 中如何实现复杂的查询操作,例如多表关联查询?
MyBatis Plus 提供了很多方法来实现复杂的查询操作。
可以使用 @TableField 注解标注关联字段,然后通过 leftJoin 、innerJoin 等方法进行表关联查询。
- MyBatis Plus 如何实现乐观锁和悲观锁?
MyBatis Plus 可以通过在实体类中添加乐观锁字段,并使用 @Version 注解标注该字段,实现乐观锁功能。
而悲观锁则需要通过编写自定义 SQL 语句来实现。
- MyBatis Plus 的批量插入和批量更新如何实现?
MyBatis Plus 提供了 insertBatch 和 updateBatchById 方法来实现批量插入和批量更新操作。
- MyBatis Plus 支持动态 SQL 语句吗?如何使用动态 SQL?
是的,MyBatis Plus 支持动态 SQL 语句。
可以使用 @SqlParser 和 @SqlStatement 注解标注动态 SQL 语句,并通过条件判断来动态拼接 SQL。
- MyBatis Plus 中的代码生成器可以自动生成代码吗?如何使用代码生成器?
是的,MyBatis Plus 提供了强大的代码生成器工具。
可以通过在配置文件中配置数据源和需要生成代码的表,然后运行代码生成器即可自动生成代码。
- MyBatis Plus 是否支持事务管理?如何配置和使用事务管理?
MyBatis Plus 支持事务管理。
可以配置数据源和事务管理器,并在方法上添加 @Transactional 注解来实现事务管理。
- MyBatis Plus 中的延迟加载是什么?如何配置和使用延迟加载?
延迟加载是指在需要的时候才加载关联对象,以减少数据库查询次数。
MyBatis Plus 内置了延迟加载的功能,可以通过配置开启延迟加载,并在需要延迟加载的字段上添加 @TableField 注解。
- MyBatis Plus 和 Spring Boot 如何集成?
MyBatis Plus 和 Spring Boot 的集成非常简单。
只需在 pom.xml 文件中引入相关依赖,并在配置文件中配置数据源和 MyBatis Plus 相关的配置项即可实现集成。
- MyBatis Plus 支持哪些数据库?是否支持多数据源配置?
MyBatis Plus 支持主流的关系型数据库,包括 MySQL、Oracle、SQL Server、PostgreSQL 等。
同时也支持多数据源配置,可以通过配置多个数据源来连接不同的数据库。
- MyBatis Plus 中的自动填充是什么?如何配置和使用自动填充?
自动填充是指在插入或更新操作时,自动填充一些字段的值,如创建时间、更新时间等。
可以通过实现 MetaObjectHandler 接口并配置对应的实现类,来实现自动填充功能。
- MyBatis Plus 中如何处理数据库表之间的关联关系?
MyBatis Plus 可以通过使用 @TableField 注解和 lambda 表达式来处理数据库表之间的关联关系。
可以定义关联字段,并通过关联字段进行表关联查询。
- MyBatis Plus 中如何实现复杂的查询条件和动态条件?
MyBatis Plus 提供了 QueryWrapper 和 LambdaQueryWrapper 类来构建复杂的查询条件和动态条件。
可以通过链式调用方法来拼接查询条件,包括等于、大于、小于、模糊查询等。
- MyBatis Plus 中如何实现一对一、一对多、多对一和多对多的关联查询?
MyBatis Plus 可以通过使用 @TableField 注解和 lambda 表达式来实现一对一、一对多、多对一和多对多的关联查询。
可以定义关联字段,并通过关联字段进行表关联查询。
- MyBatis Plus 中如何实现数据库分页,并支持前端分页请求?
MyBatis Plus 提供了 Page 类用于分页查询。
可以通过传递 Page 对象到查询方法中,实现分页查询功能。
同时,还可以通过 PageInterceptor 和 PaginationInterceptor 配合前端传递的参数,实现分页查询。
- MyBatis Plus 中的枚举类型如何使用?
MyBatis Plus 支持使用枚举类型。
只需在实体类中字段所对应的属性中使用枚举类型,并在数据库中使用相应的数据类型,即可实现枚举类型的映射。
- MyBatis Plus 中如何配置和使用缓存?
MyBatis Plus 默认集成了 MyBatis 的缓存机制。
可以在配置文件中配置缓存策略,通过注解 @CacheNamespace 标注命名空间来启用缓存功能。
- MyBatis Plus 支持哪些常见的主键策略?
MyBatis Plus 支持多种常见的主键策略,包括自增主键、UUID、雪花算法等。
可以通过设置 @TableId 注解的 value 属性来配置主键策略。
- MyBatis Plus 如何处理数据库字段和实体类属性的映射关系?
MyBatis Plus 可以通过 @TableField 注解来配置数据库字段和实体类属性的映射关系。
可以指定数据库列名、是否为插入字段、是否为更新字段等属性。
- MyBatis Plus 中进行批量删除和批量更新操作的方法是什么?
MyBatis Plus 提供了 deleteBatchIds 、deleteBatchByMap 和 updateBatchById 等方法来实现批量删除和批量更新操作。
- MyBatis Plus 支持什么样的事务传播机制?
MyBatis Plus 支持常见的事务传播机制,包括 PROPAGATION_REQUIRED 、PROPAGATION_REQUIRES_NEW 等。
可以通过在方法上添加 @Transactional 注解并配置传播行为来实现事务管理。
- MyBatis Plus 如何处理数据库的时间类型?
MyBatis Plus 可以通过 @TableField 注解和 @DateTimeFormat 注解来处理数据库的时间类型。
支持将实体类中的时间属性格式化为指定的时间格式。
- MyBatis Plus 中的列名和属性名不一致怎么办?
如果数据库的列名和实体类的属性名不一致,可以在实体类字段上使用 @TableField 注解,并在注解的 value 属性中指定数据库列名。
- MyBatis Plus 如何和 Spring Boot 集成?
MyBatis Plus 和 Spring Boot 的集成非常简单。
只需在 pom.xml 文件中引入相关的依赖,配置数据源和 MyBatis Plus 的配置项即可实现集成。
同时,使用 @MapperScan 注解扫描 Mapper 接口,使其能够被自动装配和注入。
内容来自