1.问题原因
网上查找了很多,都说是直接配置一个bean就能实现分页,但是我的这个项目是老项目的基础上引入的Mybatis-Plus,配置了如下的bean还是无法进行分页
@Bean(name = "mybatisPlusInterceptor")
@Primary
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setOptimizeJoin(true);
paginationInnerInterceptor.setDbType(DbType.MYSQL);
paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);
return interceptor;
}
尝试了很多配置方式还是无法解决;
2.最后解决方法
后来我是在一位朋友的文章中才找到原因
https://blog.csdn.net/Mr_going/article/details/111646555
我是创建了分页这个bean但是我没有把这个bean当成插件放到mybatis创建工厂中,可能springboot项目会自动把分页的这个bean使用进去,但是当前我处理的这个项目是一个老项目,还需要我收到把分页这个插件放到创建工厂中,所以最后我的关于mybatis-plus分页配置的完整代码如下:
import com.alibaba.druid.pool.DruidDataSource;
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 com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.apache.ibatis.plugin.Interceptor;
import javax.annotation.Resource;
//表示这个类为一个配置类
@Configuration
// 配置mybatis的接口类放的地方
@MapperScan(basePackages = {"com.hhh.framework.**.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory")
public class MyBatisPlusConfig {
// 数据库连接相关配置
@Resource(name = "dataSource")
private DruidDataSource dataSource;
@Bean(name = "sqlSessionFactory")
// 表示这个数据源是默认数据源
@Primary
public SqlSessionFactory test1SqlSessionFactory()
throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(this.dataSource);
bean.setMapperLocations(
// 设置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath*:mapping/*.xml"));
// Mybatis-plus 分页查询设置
Interceptor[] plugins = new Interceptor[1];
plugins[0] = mybatisPlusInterceptor();
bean.setPlugins(plugins);
return bean.getObject();
}
@Bean(name = "mybatisPlusInterceptor")
@Primary
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setOptimizeJoin(true);
paginationInnerInterceptor.setDbType(DbType.MYSQL);
paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);
return interceptor;
}
}