在一次使用mybatis的插件,分表shardbatis+分页pagehelper共同使用的时候,会抛出以下异常:

java.lang.NoSuchMethodError: net.sf.jsqlparser.util.deparser.StatementDeParser.<init>(Ljava/lang/StringBuffer;)V
at com.google.code.shardbatis.converter.AbstractSqlConverter.doDeParse(AbstractSqlConverter.java:28)
at com.google.code.shardbatis.converter.AbstractSqlConverter.convert(AbstractSqlConverter.java:19)
at com.google.code.shardbatis.converter.SqlConverterFactory.convert(SqlConverterFactory.java:78)
at com.google.code.shardbatis.plugin.ShardPlugin.intercept(ShardPlugin.java:68)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:60)

  但是,这个错只有在junit测试的时候才会报出,而tomcat启动,页面调用,则不会报错!!!!

  查看StatementDeParser类中,存在"上面提示不存在的方法",那到底是什么原因?

  突然一想,刚刚在搜索StatementDeParser类的时候,发现存在0.8.0和0.9.5两个版本的包,猜想也许是这个问题导致的。

  查看pom.xml配置如下:

     <!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<!-- 分表插件 -->
<dependency>
<groupId>org.shardbatis</groupId>
<artifactId>shardbatis</artifactId>
<version>2.0.0B</version>
</dependency>
<dependency>
<groupId>net.sf.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.8.0</version>
</dependency>

  这时候,可以看到maven依赖的包里,存在两个jsqlparser.jar

  

  jsqlparser-0.9.5.jar从何而来???原来pagehelper中存在pom.xml,会自动引入0.9.5版本的包

  

  于是,我将pom.xml中pagehelper的依赖项注释掉,这时候,只有下面两个包

  

  再运行测试用例,执行成功!!!

  可是,我必须要同时使用两个插件,怎么办???只好将pagehelper的依赖项移到最下面

  

  再次运行,依然执行成功,问题解决!

Mybatis中同时使用shardbatis和pagehelper插件冲突问题的更多相关文章

  1. MyBatis中---数据库配置的属性名冲突问题

    一.db.properties 属性文件中 最好加特殊的标志前缀  jdbc.username ,如果单纯的username有可能影响到 mapper.xml中的 ${username}; 举例   ...

  2. 使用PageHelper插件分页结合mybatis返回的列表个数不对问题解决

    问题描述:spring mvc+mybatis项目中,当使用PageHelper插件进行分页查询时,查到的总数据量值是正确的,但是查询当前页返回的列表个数不对.比如每页查询10条,返回2条或者3条.r ...

  3. 传统方式和插件方式 分别实现 分页 功能 pageHelper 插件

    实现分页  这里提供两种方式  一种是传统的分页方式  一种是基于pageHelper插件 实现的分类     推荐使用后者 前者是一般开发的方式   思路  先手动创建一个 pageUtil 工具 ...

  4. Mybatis中分表插件shardbatis使用说明

    Mybatis中实现分表,有个很简单的插件,叫shardbatis,使用maven构建的工程,可以在pom.xml中添加依赖性即可: <!-- 分库分表插件 --> <depende ...

  5. Mybatis中使用PageHelper插件进行分页

    分页的场景比较常见,下面主要介绍一下使用PageHelper插件进行分页操作: 一.概述: PageHelper支持对mybatis进行分页操作,项目在github地址: https://github ...

  6. PageHelper在Mybatis中的使用

    环境:Spring 4.2.1 Mybatis 3.2.8 pagehelper 5.1.2 Mybatis官方教程:https://github.com/pagehelper/Mybatis-Pag ...

  7. mybatis分页 -----PageHelper插件

    对查询结果进行分页 一,使用limit进行分页 1.mybatis 的sql语句: <if test="page !=null and rows !=null"> li ...

  8. SpringBoot中Mybaties PageHelper插件使用

    首先引入pom.xml文件配置  <!-- mybatis --> <dependency>  <groupId>org.mybatis.spring.boot&l ...

  9. springboot结合mybatis使用pageHelper插件进行分页查询

    1.pom相关依赖引入 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...

随机推荐

  1. C# 中数组、ArrayList、List<T> 区别

    一:数组 //定义 ]; //赋值 strs[] = "A"; strs[] = "B"; //修改 strs[] = "C"; //取值 ...

  2. FFMPEG的函数翻译文档

    https://blog.csdn.net/explorer_day/article/category/6289310/2 https://www.cnblogs.com/tocy/p/ffmpeg- ...

  3. LOJ#3087. 「GXOI / GZOI2019」旅行者(最短路)

    题面 传送门 题解 以所有的感兴趣的城市为起点,我们正着和反着各跑一边多源最短路.记\(c_{0/1,i}\)分别表示正图/反图中离\(i\)最近的起点,那么对于每条边\((u,v,w)\),如果\( ...

  4. jzoj3519

    我們考慮將一個節點x的所有兒子的數都改成y 記lcm[x]表示一個點的所有子節點的lcm值 那麼我們會發現y*deg[x] 要被lcm[x]整除 那麼x就會比x所有子節點最小的數小,記為z 那麼x就是 ...

  5. jzoj5832. 【省选模拟8.20】Emotional Flutter

    tj:我們發現,每一次走過的步長都是k,設當前走的步數是x,走到了一個白條 那麼,每一次走就是把所有黑條都向前移k位,我們可以考慮把所有黑條的左邊界不斷的向前移動k,直到下一次移動時,其左邊界小於0, ...

  6. poj3070 Fibonacci(矩阵快速幂)

    矩阵快速幂基本应用. 对于矩阵乘法与递推式之间的关系: 如:在斐波那契数列之中 f[i] = 1*f[i-1]+1*f[i-2]  f[i-1] = 1*f[i-1] + 0*f[i-2].即 所以, ...

  7. php错误控制运算符@

    PHP支持一个错误控制运算符:@.当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉. 如果用set_error_handle()设定了自定义的错误处理函数,仍然会被调用,但是 ...

  8. nginx代理websocket协议

    以下是代码段.location /wsapp/ {     proxy_pass http://wsbackend;     proxy_http_version 1.1;     proxy_set ...

  9. (LPC1769) Timer Interrupt Application

    void TIMER0_IRQHandler (void) { if(LPC_TIM0->IR & 0x01) { LPC_GPIO1->FIOPIN ^= ( << ...

  10. 配置豆瓣镜像作为python 库的下载源

    配置豆瓣镜像作为python 库的下载源 Windows 下如下配置: