PageHelper是目前最强大最好用的分页插件。
使用PageHelper插件一定要注意jar包之间的依赖关系,否则就死活出不来结果呀!!
比方说作者这里使用的是pagehelper-5.0.2.jar jsqlparser-0.9.5.jar mybatis-3.2.8。那么我为啥知道版本之间的依赖关系是这样的呢,请看下图:
废话不多说了,下面来看具体的实例。
要使用pagehelper,可以配置在mybatis的核心配置文件中,也可以配置在spring中。这里采取mybatis的配置方式,spring的配置方式以后再探讨。
案例1. 单张表的分页操作
sql配置:
代码:
package com.obtk.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
public class TestPageQuery {
public static void main(String[] args) {
SqlSession session=null;
try {
//4.得到session
session=MybatisUtil.getSession();
//分页参数,第一个参数是当前页码(pageNo),第二个参数是每页显示多少条(pageSize)
PageHelper.startPage(2, 3);
//5.执行语句
List stuList=session.selectList("stu.selectByPage");
for(StudentEntity stu : stuList){
System.out.println(stu.getStuName()+"\t"+stu.getGender()+"\t"+stu.getAge());
}
//分页实体
PageInfo thePage=new PageInfo(stuList);
System.out.println("下一页:"+thePage.getNextPage()+",上一页:"+thePage.getPrePage()
+",总条数:"+thePage.getTotal()+",总页码:"+thePage.getPages());
} catch (Exception e) {
e.printStackTrace();
}finally{
MybatisUtil.closeSession();
}
}
}
网上有人说pagehelper不支持表关联的分页,其实转换一下思路就可以啦!而且方法不止一种,so easy 啦!
案例2 用业务实体类处理表的关联及分页
sql代码:
根据查询结果建一个关联实体JoinEntity.java
package com.obtk.entitys;
import java.io.Serializable;
public class JoinEntity implements Serializable{
private static final long serialVersiOnUID= -935724073017787380L;
private int stuId;
private String stuName;
private String gender;
private int age;
private String departName;
public JoinEntity() {
}
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getDepartName() {
return departName;
}
public void setDepartName(String departName) {
this.departName = departName;
}
}
测试类:
package com.obtk.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.obtk.entitys.JoinEntity;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
public class TestPageJoinQuery {
public static void main(String[] args) {
SqlSession session=null;
try {
//4.得到session
session=MybatisUtil.getSession();
//分页参数,第一个参数是当前页码(pageNo),第二个参数是每页显示多少条(pageSize)
PageHelper.startPage(2, 3);
//5.执行语句
List stuList=session.selectList("stu.selectByJoinPage");
for(JoinEntity stu : stuList){
System.out.println(stu.getStuName()+"\t"+stu.getGender()+"\t"+stu.getAge()+"\t"+stu.getDepartName());
}
//分页实体
PageInfo thePage=new PageInfo(stuList);
System.out.println("下一页:"+thePage.getNextPage()+",上一页:"+thePage.getPrePage()
+",总条数:"+thePage.getTotal()+",总页码:"+thePage.getPages());
} catch (Exception e) {
e.printStackTrace();
}finally{
MybatisUtil.closeSession();
}
}
}
案例3 用hashmap处理表的关联及分页
sql代码
java代码:
package com.obtk.test;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.obtk.entitys.StudentEntity;
import com.obtk.utils.MybatisUtil;
public class TestPageMapQuery {
public static void main(String[] args) {
SqlSession session=null;
try {
//4.得到session
session=MybatisUtil.getSession();
//分页参数,第一个参数是当前页码(pageNo),第二个参数是每页显示多少条(pageSize)
PageHelper.startPage(2, 3);
//5.执行语句
List
怎么样,是不是so easy!
如果帮助到了您,请点个赞吧!