pageHelper不同版本的配置是有区别的, 源码中类和依赖在不同版本中有较大变化.
一 需要下载的资源
1. 以下我使用的spring/springmvc版本3.2.XX, mybaits版本是3.1.X
2. pageHelper版本是5.1.4 下载可以上maven仓库下载:http://mvnrepository.com/artifact/com.github.pagehelper/pagehelper
也可以自行在maven仓库搜索com.github.pageHelper, 查找需要的版本
pageHelper的源码git地址: https://github.com/pagehelper/Mybatis-PageHelper
3. pageHelper由于使用了sql解析工具,还需要下载jsqlparser.jar
4.1.0及以后版本需要0.9.4版本: http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.4/
4.1.0以前版本需要0.9.1版本: http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.1/
这里下载的是0.9.4版本, 版本错误也会出现报错
二 applicationContext.xml配置
<!-- myBatis文件 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--这里省略了一些个人的mysql配置-->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个,全部加进去,不然会报错, 旧版本是Dialect, 现在版本改成了helperDialect -->
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
</array>
</property>
</bean>
参数含义见github上的文档: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
三 ServiceImpl中使用
public class MemberServiceImpl implements MemberService {
@Autowired
MemberMapper memberMapper;
public List<Map<String, Object>> list() {
PageHelper.startPage(0,10); //这里设置分页的当前页和每页的数量, pagehelper会自动在sql语句中加入limit
List<Map<String, Object>> list = memberMapper.list();
return list;
}
}
如果同时需要返回当前页信息(页码, 条数等), 需要使用PageInfo类, 该类在不同pageHelper中有所差别, 这里适用5.1.4
public class MemberServiceImpl implements MemberService {
@Autowired
MemberMapper memberMapper;
public PageInfo list() { //注意这边返回的类型变为了PageInfo
// TODO Auto-generated method stub
PageHelper.startPage(0,10);
List<Map<String, Object>> list = memberMapper.list();
PageInfo pageInfo = new PageInfo(list); //将sql查询结果list传递过去
return pageInfo;
}
}
page信息在pageInfo中:
PageInfo类中变量详见github文档:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
四 Mapper的class和xml
Mapper中的内容按原先的写, 注意sql语句末尾不要带分号, pageHelp会自动使用limit分段查询, 并控制页码和查询总数
以上是粗浅的配置和使用, 之后会继续深入理解