mybatis plus面试题
时间: 2025-02-25 07:07:12 浏览: 56
### MyBatis Plus 面试问题及答案
#### 1. MyBatis-Plus 是什么?
MyBatis-Plus 是基于 MyBatis 的增强工具,旨在简化 MyBatis 开发,提高开发效率,降低代码冗余。作为一款持久层框架,提供了更多便利特性,如自动生成代码、简化 CRUD 操作、分页查询等[^1]。
#### 2. 条件构造器的作用是什么?
条件构造器用于构建复杂的 SQL 查询语句。通过封装多种条件组合方式,使得开发者可以更加灵活地编写查询逻辑而无需手动拼接字符串,从而提高了代码的安全性和可读性[^2]。
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "zhangsan").gt("age", 18);
List<User> users = userMapper.selectList(queryWrapper);
```
#### 3. 如何实现分页功能?
MyBatis-Plus 支持两种分页插件:`PageHelper` 和 `PaginationInterceptor`。推荐使用后者,在配置文件中开启分页拦截器即可全局生效。调用时只需传入 Page 对象参数并设置当前页码与每页大小即可完成分页操作。
```java
// 方式一:直接在 Mapper 方法上传参
IPage<User> page = new Page<>(current, size);
userMapper.selectPage(page, null);
// 或者更简洁的方式二:利用 Service 层提供的方法
userService.page(new Page<>(current, size));
```
#### 4. 解释乐观锁机制及其应用场景
乐观锁是一种并发控制策略,适用于高并发场景下的数据更新冲突处理。当多个线程尝试修改同一记录时,只有最先提交成功的事务能够成功执行;其他未获得最新版本号的请求则会失败重试直至获取到最新的版本信息为止。MyBatis-Plus 中可通过 @Version 注解配合 version 字段来启用该特性。
```xml
<!-- 实体类字段定义 -->
<property name="version" column="VERSION"/>
```
```java
@TableField(updateStrategy = FieldFill.UPDATE)
@Version
private Integer version;
```
#### 5. 描述逻辑删除的概念和具体实现
逻辑删除是指并不真正从数据库表中移除某条记录,而是将其标记为已删除状态(通常通过增加一个 deleted 字段表示),以此达到软删效果。这样做的好处是可以保留历史变更痕迹以便日后追溯审计需求。MyBatis-Plus 只需简单配置就能轻松支持这一特性。
```yaml
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
```
```java
@TableLogic
private Integer deleted;
```
阅读全文
相关推荐

















