改造SqlSessionFactory后,mybatis分页不好使的问题,网上的教程大多是创建mybatisPlusConfig类,然后就会生效,但是新版本的这个版本的ruoyi引入了SqlSessionFactory,加上配置还是不生效;
这是原版的代码:
@Bean
public MybatisSqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
String mapperLocations = env.getProperty("mybatis.mapperLocations");
String configLocation = env.getProperty("mybatis.configLocation");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
GlobalConfig config = new GlobalConfig();
config.setMetaObjectHandler(new MyMetaObjectHandler());
config.setSqlInjector(new MySqlInjector());
GlobalConfig.DbConfig dbConfig = new GlobalConfig.DbConfig();
dbConfig.setIdType(IdType.AUTO);
config.setDbConfig(dbConfig);
sessionFactory.setDataSource(dataSource);
sessionFactory.setGlobalConfig(config);
sessionFactory.setPlugins(mybatisPlusInterceptor());
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory;
}
一、需要在需要的地方引入mybatisplus依赖
网上这种教程很多就不写了....
还需要改造SqlSessionFactory,根据yml文件改造:
二、需要先引入mybatisPlus分页插件
//分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
ps1:此处用的mybatisPlus版本是3.5.1,网上说3.4.0前后的版本引入的插件不一样
ps2:首先需要先注入这个bean,打断点启动的时候看看走不走
ps3:仅仅注入进spring,这个配置是不会被调用的
三、需要将这个插件被SqlSessionFactory调用
在sqlSessionFactory中调用插件,这一步至关重要!
sessionFactory.setPlugins(mybatisPlusInterceptor());