使用mybatis分页插件PageHelper5.0.0遇到的问题总结
2018-01-01 00:00
886 查看
摘要: 使用mybatis分页插件PageHelper5.0.0遇到的问题总结
最近在学习一个项目,就是网上流传的taotao-shop,学到使用分页插件的时候,突然卡主了,异常,我的天,要知道这种整合项目中出现异常,要不就是jar包冲突,要不就是配置文件哪个地方不对,这样找起来,没有头绪,简直就是折腾,最开始我的mybatis全局配置文件是这样写的:
运行taotao-manager出现以下异常:
后面还有一行关键描述:
Cause: java.lang.ClassCastException: com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor
意思就是说这个分页插件的Interceptor没有被实现
来看一下我的,PageHelper版本,以及com.github.pagehelper.PageHelper类
pageHelper是如何在mybatis中工作呢,是通过mybatis的pulgin实现了Interceptor接口,从而获得要执行的sql语句实现分页技术,而我们的PageHelper5.0.0版本中的这个类,并没有出现implements Interceptor,我们再来看下pagehelper这个包下的其他类,我们发现,有个类很像我们要的,我们进去一看,果然是它:
因此,我们修改我们的mybatis全局配置文件SqlMapConfig.xml如下:
我们再次,运行taotao-manager如下:
正常运行,然后,我们需要设定分页插件的方言dialect的value,我们使用的是mysql数据库,因此value=mysql,我们再次改下配置文件:
我们再次启动我们的项目:
我去,这个会话工程"sqlSessionFactory"怎么又出来了,我们往后翻,发现有个关键描述:
Error parsing SQL Mapper Configuration. Cause: com.github.pagehelper.PageException: java.lang.ClassNotFoundException: mysql
没有发现mysql这个类,太折腾了,我也不想检查其他jar包是否版本不对了,这个后面有时间再去研究,网上说,PageHelper插件4.0.0以后的版本支持自动识别使用的数据库,可以不用配置 <property name="dialect" value="mysql"/> 这,抱着侥幸的心理,我再一次试了试:
ok,没问题了,项目正常跑起来了(对于初学者来说,出现这种怪异的问题,真是没辙,要么网上查,查不到就自己蒙,都不行了,从头来),我们最后看下分页插件的使用部分(主要就是测试部分,插件都配置不对,测试部分就是摆设):
最近在学习一个项目,就是网上流传的taotao-shop,学到使用分页插件的时候,突然卡主了,异常,我的天,要知道这种整合项目中出现异常,要不就是jar包冲突,要不就是配置文件哪个地方不对,这样找起来,没有头绪,简直就是折腾,最开始我的mybatis全局配置文件是这样写的:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置分页插件 PageHelper --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> </plugin> </plugins> </configuration>
运行taotao-manager出现以下异常:
后面还有一行关键描述:
Cause: java.lang.ClassCastException: com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor
意思就是说这个分页插件的Interceptor没有被实现
来看一下我的,PageHelper版本,以及com.github.pagehelper.PageHelper类
pageHelper是如何在mybatis中工作呢,是通过mybatis的pulgin实现了Interceptor接口,从而获得要执行的sql语句实现分页技术,而我们的PageHelper5.0.0版本中的这个类,并没有出现implements Interceptor,我们再来看下pagehelper这个包下的其他类,我们发现,有个类很像我们要的,我们进去一看,果然是它:
因此,我们修改我们的mybatis全局配置文件SqlMapConfig.xml如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置分页插件 PageHelper --> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> </plugin> </plugins> </configuration>
我们再次,运行taotao-manager如下:
正常运行,然后,我们需要设定分页插件的方言dialect的value,我们使用的是mysql数据库,因此value=mysql,我们再次改下配置文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 配置分页插件 PageHelper --> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> </plugin> </plugins> </configuration>
我们再次启动我们的项目:
我去,这个会话工程"sqlSessionFactory"怎么又出来了,我们往后翻,发现有个关键描述:
Error parsing SQL Mapper Configuration. Cause: com.github.pagehelper.PageException: java.lang.ClassNotFoundException: mysql
没有发现mysql这个类,太折腾了,我也不想检查其他jar包是否版本不对了,这个后面有时间再去研究,网上说,PageHelper插件4.0.0以后的版本支持自动识别使用的数据库,可以不用配置 <property name="dialect" value="mysql"/> 这,抱着侥幸的心理,我再一次试了试:
ok,没问题了,项目正常跑起来了(对于初学者来说,出现这种怪异的问题,真是没辙,要么网上查,查不到就自己蒙,都不行了,从头来),我们最后看下分页插件的使用部分(主要就是测试部分,插件都配置不对,测试部分就是摆设):
package com.taotao.pageHelper; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.taotao.mapper.TbItemMapper; import com.taotao.pojo.TbItem; import com.taotao.pojo.TbItemExample; public class TestPageHelper { /** * @throws Exception * 2017年8月17日12:00:57 */ @Test public void testPageHelper() throws Exception{ //1、获得mapper代理对象 //初始化一个spring容器 ApplicationContext applicationContext = null; try{ //获得spring上下文对象 applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); } catch (Exception ex) { ex.printStackTrace(); } //拿到一个代理对象 我们要操作的商品信息 在mapper映射类中,我们通过上下文对象拿到这个类的代理 TbItemMapper bean = applicationContext.getBean(TbItemMapper.class); //2、设置分页处理 PageHelper.startPage(1, 20);//每页显示20条 相当于 SELECT * FROM taotao.tb_item limit 0,20; //3、执行查询 TbItemExample example = new TbItemExample(); //Criteria criteria = example.createCriteria(); //criteria.andIdEqualTo(value) //这个是根据某个条件查 比如主键商品ID List<TbItem> list = bean.selectByExample(example);//example不设置 表示无条件 这个时候bean已经将分页效果(sql语句)作用在example上了 if(list != null & list.size()>0){ int i = 0; for(TbItem item : list){ System.out.println(item.getTitle()+","+(i+1));//输出商品的标题,一页20行 i++; } } //4、取分页后的结果 //包装list PageInfo<TbItem> pageInfo = new PageInfo<>(list); long total = pageInfo.getTotal();//总记录数 System.out.println("total:"+total); int pages = pageInfo.getPages(); System.out.println("pages:"+pages);//总页数 int pageSize= pageInfo.getPageSize(); System.out.println("pageSize:"+pageSize);//每页的展示数 } }
相关文章推荐
- 使用mybatis分页插件PageHelper5.0.0遇到的问题总结
- 使用mybatis分页插件PageHelper5.0.0遇到的问题总结
- 使用mybatis分页插件PageHelper5.1.2遇到的问题
- 记录问题:springboot中使用Mybatis-pagehelper分页插件遇到的版本兼容问题
- mybatis3.4.2分页插件 pagehelper5.0.0使用
- 使用PageHelper插件分页结合mybatis返回的列表个数不对问题解决
- 使用mybatis时选择分页插件PageHelper 5.0.0
- mybatis的分页插件pagehelper-fix使用、数据库分页查询模板sql、总结mysql与oracle语句的区别
- Mybatis 的分页插件PageHelper-4.1.1的使用
- MyBatis分页插件:比PageHelper都要简单,使用很灵活,目前支持Oracle和MySQL
- MyBatis分页插件PageHelper使用练习
- 【TaoTao】Mybatis 系列(3)——Mybatis下使用PageHelper分页插件
- Mybatis 的分页插件PageHelper-4.1.1的使用
- Mybatis的分页插件PageHelper的使用方法
- Mybatis 的分页插件PageHelper-4.1.1的使用
- Maven+Spring + Mybatis 使用 PageHelper 插件分页
- MyBatis分页插件PageHelper的使用
- Mybatis分页插件PageHelper的使用
- mybatis分页插件PageHelper的使用(转)
- Mybatis分页插件-PageHelper的使用