实现效果:
在处于第一页时,“上一页”按钮失效,处于最后一页时,“下一页”按钮失效。
实现过程:1.搭建MyBatis环境 ---mybatis jar包记得引入
1.1 创建全局的MyBatis.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>
<environments default="default">
<environment id="default">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_study"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/yyl/mapper/Mapper.xml"/>
</mappers>
</configuration>
1.2.配置Mapper.xml文件
需要创建两个select语句
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yyl.mapper">
<select id="selAll" resultType="com.yyl.pojo.User" >
select *from t_user //可以更换别的语句,主要为了查询数据库记录的条数
</select>
<select id="selLim" resultType="com.yyl.pojo.User" parameterType="Map">
select *from t_user limit #{pagestart},#{pagesize}
</select> //根据页数以及每页显示的条数 查询
</mapper>
2.创建PageInfo类,主要存储 当前页数,当前查询的起始点,当前查询的结果,User类
package com.yyl.pojo;
import java.util.List;
public class PageInfo {
private int pagesize; // 分页的长度,一页显示的记录的个数
private int pagestart;// 分页开始的记录数
private int pagenow; // 当前页
private int pagelen; // 总共的页数
private List<User> list;
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getPagestart() {
return pagestart;
}
public void setPagestart(int pagestart) {
this.pagestart = pagestart;
}
public int getPagenow() {
return pagenow;
}
public void setPagenow(int pagenow) {
this.pagenow = pagenow;
}
public int getPagelen() {
return pagelen;
}
public void setPagelen(int pagelen) {
this.pagelen = pagelen;
}
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
}
简单起见,只使用了uid,uname,age 三个值
package com.yyl.pojo;
public class User {
private int uid;
private int age;
private String uname;
private String pwd;
private String sex;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [uid=" + uid + ", age=" + age + ", uname=" + uname + ", pwd=" + pwd + ", sex=" + sex + "]";
}
}
3.创建service
package com.yyl.service;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.yyl.pojo.PageInfo;
import com.yyl.pojo.User;
public class ShowUserService {
public PageInfo getUserInfo(int pagesize,int pagenow) throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(is);
SqlSession session = build.openSession();
List<User> user = session.selectList("selAll");
PageInfo p = new PageInfo();
p.setPagestart((pagenow-1)*pagesize); //根据当前页计算查询的起始点
p.setPagenow(pagenow);
p.setPagesize(pagesize); //设置查询长度,也就是每一页显示的个数
int len=0;
if(user.size()%pagesize==1){
len = user.size()/pagesize+1;
}else{
len = user.size()/pagesize;
}
p.setPagelen(len); //数据库中的记录总共可以显示多少页
Map<String,Integer> map = new HashMap<>();
map.put("pagesize", pagesize);
map.put("pagestart",(pagenow-1)*pagesize); //设置查询的参数
p.setList(session.selectList("selLim",map));
return p;
}
}
4.创建index.jsp页面进行显示
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> //使用EL表达式
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>分页</title>
</head>
<body>
<table>
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
</tr>
<c:forEach items="${PageInfo.list}" var="list">
<tr>
<td>${list.uid }</td>
<td>${list.uname }</td>
<td>${list.age }</td>
<tr>
</c:forEach>
</table>
<a href="page?pagesize=${PageInfo.pagesize}&pagestart=${PageInfo.pagenow-1}" <c:if test="${PageInfo.pagenow<=1}"> onclick="javascript:return false;" </c:if> >上一页</a>      
<a href="page?pagesize=${PageInfo.pagesize}&pagestart=${PageInfo.pagenow+1}" <c:if test="${PageInfo.pagenow>=PageInfo.pagelen}"> onclick="javascript:return false;" </c:if> >下一页</a>
</body>
</html>