MybatisPlusConfig的作用
时间: 2024-01-11 22:59:05 浏览: 169
MybatisPlusConfig是Mybatis-Plus框架的核心配置类,用于配置Mybatis-Plus的全局属性、插件、拦截器等。它的主要作用如下:
1. 配置Mybatis-Plus的全局属性,例如数据库方言、分页插件、主键策略等。
2. 配置Mybatis-Plus的拦截器,例如乐观锁插件、防止SQL注入的插件等。
3. 配置Mybatis-Plus的自动填充属性,例如创建时间、更新时间、创建人、更新人等。
4. 配置Mybatis-Plus的SQL注入器,例如逻辑删除、动态表名、多租户等。
5. 配置Mybatis-Plus的公共字段填充器,例如创建时间、更新时间、创建人、更新人等。
通过对MybatisPlusConfig的配置,可以方便地实现Mybatis-Plus的各种特性,提高开发效率和代码质量。
相关问题
mybatis plus 分页不起作用
在使用 MyBatis-Plus 进行分页查询时,传入了 pageNum 和 pageSize,但是查询结果没有按照预期的效果返回。这个问题的原因可能是缺少分页插件的配置。可以在项目工程中创建 config 目录,在其中新建配置类 MyBatisPlusConfig.java,然后添加分页插件的配置。具体的配置代码如下所示:
```java
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
/**
* 插件配置
*
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言)
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 添加乐观锁拦截器
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
```
其中,需要注意的是,需要根据实际使用的数据库类型来设置分页方言,这里以 PostgreSQL 数据库为例,设置了 DbType.POSTGRE_SQL。
mybatis plus面试题
### 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;
```
阅读全文
相关推荐














