-
修改pom文件
根目录pom中注释掉原有mybatis依赖,添加mp依赖并在pageHelper中排除依赖冲突。
<!-- SpringBoot集成mybatis框架 -->
<!--<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>-->
<!--mybatis-plus替换mybatis-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- pagehelper 分页插件 (排除依赖,避免依赖冲突)-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version>
<exclusions>
<exclusion>
<artifactId>mybatis-spring</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
-
ruoyi-common模块的pom中引入mybatis-plus
<!--引入mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
- 在ruoyi-admin模块中将application.yml的MyBatis的配置全部替换成MyBatis-plus的,注意:mp的配置以"-"分隔。
# MyBatis配置
#mybatis:
# # 搜索指定包别名
# typeAliasesPackage: com.ruoyi.**.domain
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
mybatis-plus:
type-aliases-package: com.ruoyi.**.domain
mapper-locations: classpath*:mapper/**/*Mapper.xml
config-location: classpath:mybatis/mybatis-config.xml
- 修改ruoyi-framework中原有MybatisConfig配置类(有人说也可以删掉配置类中sqlSessionFactory的配置,mp会自动注入MybatisSqlSessionFactory,我没有去尝试),注意在sqlSessionFactory中设置插件,否则分页时不会拼接分页参数。
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
// 搜索指定包别名
String typeAliasesPackage = env.getProperty("mybatis-plus.type-aliases-package");
// 配置mapper的扫描,找到所有的mapper.xml映射文件
String mapperLocations = env.getProperty("mybatis-plus.mapper-locations");
// 加载全局的配置文件
String configLocation = env.getProperty("mybatis-plus.config-location");
// final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 乐观锁(按需配置)
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
// 分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 如果不在这里设置插件,在使用mybatis-plus分页功能时,sql不会拼接分页参数,总是查询所有数据
sessionFactory.setPlugins(interceptor);
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}
/**
* mybatis-plus分页插件配置
*
* @return PaginationInterceptor
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
/* MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;*/
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setDbType(DbType.MYSQL);
paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
// 乐观锁
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}