问题:
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class }) })
public class PaginationInterceptor implements Interceptor {......}
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error opening session. Cause: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
### Cause: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:100)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:47)
at com.baomidou.mybatisplus.test.UserMapperTest.main(UserMapperTest.java:73)
Caused by: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
at org.apache.ibatis.plugin.Plugin.getSignatureMap(Plugin.java:87)
at org.apache.ibatis.plugin.Plugin.wrap(Plugin.java:44)
at com.baomidou.mybatisplus.plugins.PaginationInterceptor.plugin(PaginationInterceptor.java:185)
at org.apache.ibatis.plugin.InterceptorChain.pluginAll(InterceptorChain.java:31)
at org.apache.ibatis.session.Configuration.newExecutor(Configuration.java:546)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:96)
... 2 more
Caused by: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
at java.lang.Class.getMethod(Class.java:1605)
at org.apache.ibatis.plugin.Plugin.getSignatureMap(Plugin.java:84)
... 7 more
问题原因:
MyBatis 3.4.0 之后,StatementHandler的prepare方法做了修改
Statement prepare(Connection connection, Integer transactionTimeout) throws SQLException;
解决方法:
1.修改为
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class, Integer.class })})
2.降低MyBatis版本号
感谢大家的阅读, 如有疑问可以加我微信
评论已关闭