若依版本:ruoyi-vue-Springboot3 2.8.9
1. 移除主pom里面原来的pagehelper分页插件和mybatis
<!-- pagehelper 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<pagehelper.boot.version>2.1.0</pagehelper.boot.version>
<mybatis-spring-boot.version>3.0.3</mybatis-spring-boot.version>
2.引入mybatisplus和pagehelper
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<mybatis-plus.version>3.5.5</mybatis-plus.version>
<pagehelper.version>5.3.3</pagehelper.version>
<lombok.version>1.18.30</lombok.version>
注意:这里引入的是pagehelper,不是pagehelper-spring-boot-starter,还有mybatisplus的版本是mybatis-plus-spring-boot3-starter,如果使用pagehelper-spring-boot-starter或者mybatis-plus--boot-starter都会很容易引起版本冲突,我也是尝试了好久才解决版本冲突问题,如果你发现其他不冲突版本,可以@我
3.在common模块的pom里面同样移除原来的mybatis和pagehelper依赖,添加下面依赖
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
4.删除原来的MybatisConfig文件,添加MybatisPlusConfig
package com.ruoyi.framework.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.github.pagehelper.PageInterceptor;
import com.ruoyi.common.handler.FieldMetaObjectHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import java.util.Properties;
/**
* @author Johnson
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 乐观锁
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
// 防止全表更新与删除
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return interceptor;
}
@Bean
// 分页插件配置
PageInterceptor pageInterceptor(){
PageInterceptor pageInterceptor = new PageInterceptor();
Properties properties = new Properties();
properties.setProperty("helperDialect", "mysql");
pageInterceptor.setProperties(properties);
return pageInterceptor;
}
/**
* mybatis-plus 自动填充字段
*/
@Bean
public FieldMetaObjectHandler fieldMetaObjectHandler(){
return new FieldMetaObjectHandler();
}
}
注意:因为我直接导入了pagehelper而不是原来的Springboot整合后的pagehelper-spring-boot-starter,所以在配置文件里面配置分页参数将不生效,所以必须要在Java代码里面配置。
5.修改admin模块下的application.yml里面的mybatis配置为
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
banner: false #启动时不输出mp的图标
db-config:
id-type: auto
logic-delete-value: 1
logic-not-delete-value: 0
logic-delete-field: del_flag
6.添加自动填充处理类
package com.ruoyi.common.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
/**
* mybatis-plus 自动填充字段
*
* @author theodo
*/
public class FieldMetaObjectHandler implements MetaObjectHandler {
private final static String CREATE_TIME = "createTime";
private final static String CREATE_BY = "createBy";
private final static String UPDATE_TIME = "updateTime";
private final static String UPDATE_BY = "updateBy";
private final static String DEL_FLAG = "delFlag";
@Override
public void insertFill(MetaObject metaObject) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Date date = new Date();
// 创建者
strictInsertFill(metaObject, CREATE_BY, String.class, loginUser.getUsername());
// 创建时间
strictInsertFill(metaObject, CREATE_TIME, Date.class, date);
// 更新者
strictInsertFill(metaObject, UPDATE_BY, String.class, loginUser.getUsername());
// 更新时间
strictInsertFill(metaObject, UPDATE_TIME, Date.class, date);
// 删除标识
strictInsertFill(metaObject, DEL_FLAG, Integer.class, 0);
}
@Override
public void updateFill(MetaObject metaObject) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 更新者
strictUpdateFill(metaObject, UPDATE_BY, String.class, loginUser.getUsername());
// 更新时间
strictUpdateFill(metaObject, UPDATE_TIME, Date.class, new Date());
}
}