在原来的应用中引入mybatis-plus,一切都按照官方教程。
<!-- mybatis plus引入插件 -->
<bean id="mybatisPlusInterceptor" class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
<property name="interceptors">
<list>
<!-- 分页插件-->
<ref bean="paginationInnerInterceptor"/>
</list>
</property>
</bean>
<!-- mybatis引入分页插件 -->
<bean id="paginationInnerInterceptor"
class="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor">
<constructor-arg name="dbType" value="MYSQL"/>
</bean>
代码可以通过编译,但是在部署的时候会报错:java.lang.NoSuchMethodError: net.sf.jsqlparser.statement.select.SelectExpressionItem.withAlias
。
以我个人经验来看,出现java.lang.NoSuchMethodError
时有两个可能:
- 存在依赖冲突
- 引入的依赖版本对不上
但是,我用插件分析了pom.xml, 发现com.github.sqlparser
不仅没有冲突,还是mybatis-plus包自带的版本:
我实在想不到这个java.lang.NoSuchMethodError
是怎么出现的。希望有大佬指点一下思路。
写了个demo试了下,下边是我的依赖,好像和你的 mybatis-plus以及jsqlparser版本都是一样的。

而且在这个依赖版本下,我这边测试是成功了。
根据报错,你这个问题,因该是调用withAlias时,没有这个方法,所以感觉只能是jsqlparser包的问题。

然后我把jsqlparser的包版本从4.2逐一降低测试,到4.0为止都没有问题,但是降低到3.2的时候也出现了你所说的问题。所以你的jsqlparser版本应该就是3.2或者更低的。