分页一共需要用到2条sql语句
select count(*) form user;
select * from user limit 1.3//1--->从第几条开始,3表示一共显示条数
1.创建user实体类
public class User {
private String uid;
private String uname;
private Integer unumber;
private String upwd;
private String uemail;
private Date createtime;
private Date lastupdatetime;
private String description;
//getter/setter---省略
}
2.创建mapper层接口及mapper.xml文件
public interface UserMapper {
/**查询用户总记录数**/
int selectCount();
/**分页操作,调用findByPage limit分页方法**/
List<User> findBypage(HashMap<String,Object> map);
}
<?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="top.lolcl.myblog.dao.UserMapper">
<resultMap id="BaseResultMap" type="top.lolcl.myblog.entity.User">
<id column="uid" jdbcType="VARCHAR" property="uid" />
<result column="uname" jdbcType="VARCHAR" property="uname" />
<result column="unumber" jdbcType="INTEGER" property="unumber" />
<result column="upwd" jdbcType="VARCHAR" property="upwd" />
<result column="uemail" jdbcType="VARCHAR" property="uemail" />
<result column="createtime" jdbcType="DATE" property="createtime" />
<result column="lastupdatetime" jdbcType="DATE" property="lastupdatetime" />
<result column="description" jdbcType="VARCHAR" property="description" />
</resultMap>
<sql id="Base_Column_List">
uid, uname, unumber, upwd, uemail, createtime, lastupdatetime, description
</sql>
<!-- 查询用户记录总数 -->
<select id="selectCount" resultType="int">
select count(*) from user
</select>
<!-- 根据分页数据start 和size查询数据 -->
<select id="findBypage" parameterType="Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from user ORDER BY unumber ASC
<if test="start!=null and size!=null">
limit #{start},#{size}
</if>
</select>
</mapper>
3.创建page工具类封装分页需要用到数据
/**
* 分页工具类
* @author sanch
*
*/
public class Page<T> {
private int currPage;//当前页
private int pageSize;//每页显示记录数
private int totalCount;//总记录数
private int totalPage;//总页数
private List<T> lists;//每页显示的数据
//getter/setter---省略
}
4.创建service 业务逻辑层接口及实现类
IuserService.java
/**
* 逻辑处理层
* @author sanch
*
*/
public interface IUserService {
/**查询用户总记录数**/
int selectCount()throws Exception;
/**分页操作,调用findByPage limit分页方法**/
Page<User> findByPage(int currentPage)throws Exception;
}
/**分页操作,调用findByPage limit分页方法**/
@Override
public Page<User> findByPage(int currentPage) throws Exception {
HashMap<String,Object> map = new HashMap<String,Object>();
Page<User> page = new Page<User>();
//封装当前页数
page.setCurrPage(currentPage);
//每页显示的页数
int pageSize = 2;
page.setPageSize(pageSize);
//封装总记录数
int totalCount = usermapper.selectCount();
page.setTotalCount(totalCount);
//封装总页数
double tc = totalCount;
Double num = Math.ceil(tc/pageSize);//向上取整
page.setTotalPage(num.intValue());
map.put("start", (currentPage-1)*pageSize);
map.put("size",page.getPageSize());
//封装每页显示数据
List<User> lists = usermapper.findBypage(map);
page.setLists(lists);
return page;
}
5.创建controller 控制层,掉i有方法实现分页功能
@PermissionsAnn(value="user") //用户权限
@RequestMapping("userlist")
public String userlist(@RequestParam(value="currentPage",defaultValue="1",required=false)int currentPage,Model model) throws Exception {
model.addAttribute("pagemsg", userservice.findByPage(currentPage));//回显分页数据
return "user/userlist";
}