解决:java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.Plain【Mybatis3.x + PageHelper】

在使用mybatis-plus3.x+pagehelper作为分页方案的时候,使用如下:

		
		<dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelper-spring-boot-starterartifactId>
        dependency>
        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.1version>
        dependency>

报如下错误:

java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.Plain

查找资料之后,发现是jsqlparser的版本不对导致的。

pagehelper-sprng-boot-starter 使用的是的版本是1.0版本,说是版本太低。

解决:java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.Plain【Mybatis3.x + PageHelper】_第1张图片

解决方法

手动添加依赖

不用pagehelper-sprng-boot-starter ,手动添加依赖。

		<dependency>
		    <groupId>com.github.pagehelpergroupId
		    >pagehelperartifactId>
		    <version>5.1.10version>
			dependency>
		
		<dependency>
		    <groupId>com.github.jsqlparsergroupId>
		    <artifactId>jsqlparserartifactId>
		    <version>2.1version>
		dependency>
		
		<dependency>
	        <groupId>com.baomidougroupId>
	        <artifactId>mybatis-plus-boot-starterartifactId>
	    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);
    }

你可能感兴趣的:(踩坑日常,java,bug)