实体类
public class PageBean<T> implements Serializable {
private int pageNum;//当前页数
private int pageSize;//每页显示的记录数
private int totalCount;//总记录数
private int pageNums;//总页数
private List<T> list;//每页显示的数据
方法体........
SpeakerMapper接口
//查询总数 模糊查询
int getAllSpeaker(HashMap<Object, Object> map);
//分页
List<Speaker> queryAllSpeakerList(HashMap<Object, Object> map);
SpeakerMapper.xml sql语句
<!--分页与模糊查询-->
<select id="getAllSpeaker" parameterType="java.util.Map" resultType="int">
select count(*) from speaker
<where>
<if test="queryName !=null and queryName !=''">
speaker_name like '%${queryName}%'
</if>
<if test="queryJob !=null and queryJob !=''">
and speaker_job like '%${queryJob}%'
</if>
</where>
</select>
<select id="queryAllSpeakerList" parameterType="java.util.Map" resultType="com.zhiyou100.video.model.Speaker">
select * from speaker
<where>
<if test="queryName !=null and queryName !=''">
speaker_name like '%${queryName}%'
</if>
<if test="queryJob !=null and queryJob !=''">
and speaker_job like '%${queryJob}%'
</if>
</where>
limit #{start},#{pageSize}
</select>
SpeakerService业务层接口
//对主讲人进行分页
PageBean<Speaker> queryAllSpeakerList(HashMap<Object, Object> map);
SpeakerService业务层实现类
@Override
public PageBean<Speaker> queryAllSpeakerList(HashMap<Object, Object> map) {
/*
private int pageNum;//当前页数
private int pageSize;//每页显示的记录数
private int totalCount;//总记录数
private int totalPage;//总页数
private List<T> Lists;//每页显示的数据
*/
//获取当前页的值
int pageNum = (int)map.get("pageNum");
int pageSize = (int)map.get("pageSize");
//获取总记录数totalCount
int totalCount = speakerMapper.getAllSpeaker(map);
//获取总页数 (公式:总记录数 % 每页显示的记录数 == 0 ? 总记录数 / 每页显示的记录数 :(总记录数 /每页显示的记录数)+1
int pageNums = totalCount % pageSize == 0 ? totalCount / pageSize:(totalCount/pageSize)+1;
//起始页=(当前页-1)*每页显示的记录数
int start = (pageNum-1)*pageSize;
map.put("start",start);
//获取每页的数据>
List<Speaker> list = speakerMapper.queryAllSpeakerList(map);
PageBean<Speaker> pageBean = new PageBean<>(pageNum, pageSize, totalCount, pageNums, list);
return pageBean;
}
SpeakerController控制层
//分页查询所有
@RequestMapping("/speaker/index.do")
public String list(String queryName,String queryJob,Integer pageNum,Model model,HttpServletRequest req){
HashMap<Object, Object> map = new HashMap<>();
map.put("queryName",queryName);//模糊查询姓名
map.put("queryJob",queryJob);//模糊查询职位
//判断首次加载的主页值
if(pageNum == null||pageNum <= 0){
pageNum = 1;
}
//將pageNum
map.put("pageNum",pageNum);
//每页显示的数值,页面上每页显示多少条数据,就跟这有关
map.put("pageSize",5);
//将map传入服务层,返回PageBean分也层
PageBean<Speaker> pageInfo = speakerService.queryAllSpeakerList(map);
model.addAttribute("queryName",queryName);
model.addAttribute("queryJob",queryJob);
model.addAttribute("pageInfo",pageInfo);//对应前端分页上的
return "/admin/speaker/index";
}
index.jsp主页
<%--分页请点击这个路径--%>
<jsp:include page="../page.jsp"></jsp:include>
</div>
<form id="pageForm" action="admin/speaker/index.do" method="post">
<input type="hidden" name="queryName" value="${queryName }">
<input type="hidden" name="queryJob" value="${queryJob }">
<%--分页--%>
<input type="hidden" name="pageNum" value="${pageInfo.pageNum }" id="queryPage">
</form>
page.jsp分页页面
<!-- 分页显示 -->
<nav aria-label="Page navigation">
<ul class="pagination">
<c:if test="${pageInfo.pageNum==1 }">
<li class="disabled">
<a href="#" aria-label="Previous" onclick="return false;"><span aria-hidden="true">«</span></a>
</li>
</c:if>
<c:if test="${pageInfo.pageNum>1 }">
<li>
<a href="javascript:void(0);" aria-label="Previous" onclick="queryPage(${pageInfo.pageNum-1});"><span aria-hidden="true">«</span></a>
</li>
</c:if>
<c:forEach begin="1" end="${pageInfo.pageNums }" step="1" var="i">
<c:if test="${pageInfo.pageNum==i }">
<li class="active"><a href="javascript:void(0);">${i }</a></li>
</c:if>
<c:if test="${pageInfo.pageNum!=i }">
<li><a href="javascript:void(0);" onclick="queryPage(${i})">${i }</a></li>
</c:if>
</c:forEach>
<c:if test="${pageInfo.pageNum==pageInfo.pageNums }">
<li class="disabled">
<a href="javascript:void(0);" aria-label="Next"><span aria-hidden="true">»</span></a>
</li>
</c:if>
<c:if test="${pageInfo.pageNum!=pageInfo.pageNums }">
<li>
<a href="javascript:void(0);" onclick="queryPage(${pageInfo.pageNum+1})" aria-label="Next"><span aria-hidden="true">»</span></a>
</li>
</c:if>
</ul>
</nav>