背景
接手的这个项目, 由于开发的人好几个, 风格不一样, 里面既有mybatis, 也有mybatisplus, 分页大多用的是pagehelper
我一开始是将原本的mybatisplus2.x版本升级了下, 变成``3.x`, 然后写了个测试方法测试分页:
IPage<Student> page = new Page<>(1,10);
IPage<Student> page1 = studentService.page(page);
System.out.println("page1 = " + page1.getRecords().size());
assert page1.getRecords().size() == 10;
PageHelper.startPage(1,10);
List<CoursesVO> list = mystudyMapper.findCourses();
PageInfo<CoursesVO> pageInfo = new PageInfo<>(list);
System.out.println("pageInfo = " + pageInfo.getList().size());
assert pageInfo.getList().size() == 10;
结果是, 没有报错, 但是发现list是查回来所有结果 , 且total是0
解决
最终各种找资料, 排列组合+枚举, 加每次超长的编译等待时间, 搞了2个下午加1个晚上加1个上午的时间. 总算搞定了
1. 依赖
先说最终可行的方案: 首先依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.1</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.0</version>
</dependency>
首先是依赖冲突, 将pagehelper里面的mybatis几个依赖排除 其次是jsqlparser, pagehelper里的这个版本很低, 我试了下要匹配mybatisplus的3.4.2版本, 需要pagehelper的1.3.1版本
2. 配置
这个可以说是最蛋疼的了, 因为本身mbplus的高级版本就有不同的分页配置方式, 在我不停的切换mybatisplus版本的时候, 随之带来的是更多的排列组合的配置.
@Bean("mybatisPlusPageInterceptor")
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
pagehelper的配置不用改
pagehelper:
reasonable: true
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
接着就是最容易被忽视的, 也是我最后加上才成功的
@Bean(name = "dataSqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
Interceptor[] plugins = {mybatisPlusPageInterceptor};
bean.setPlugins(plugins);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/**/*.xml"));
return bean.getObject();
}
|