在使用mybatis-plus3.x+pagehelper作为分页方案的时候,使用如下:
<!--1.2.3版本-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
报如下错误:
java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.Plain
查找资料之后,发现是jsqlparser的版本不对导致的。
pagehelper-sprng-boot-starter
使用的是的版本是1.0版本,说是版本太低。
解决方法
手动添加依赖
不用pagehelper-sprng-boot-starter
,手动添加依赖。
<dependency>
<groupId>com.github.pagehelper</groupId
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
<!-- pagehelper 依赖 -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
手动添加拦截器
@Configuration
public class MpConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean
ConfigurationCustomizer mybatisConfigurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(MybatisConfiguration configuration) {
configuration.addInterceptor(new com.github.pagehelper.PageInterceptor());
}
};
}
}
测试一下
@Test
public void testPageHelper() {
PageHelper.startPage(1, 2);
List<DomainVo> domainVos = mapper
.selectList(null)
.stream()
.map(this::convertEntity2Vo)
.collect(Collectors.toList());
PageInfo<DomainVo> pageInfo = new PageInfo<>(domainVos);
System.out.println(pageInfo);
}