首先laypage分页 用到了三个工具类
Util.PageOrder
package com.main.java.gbicc.entprophet.util;
public class PageOrder {
//总条数
private int totalCount;
//分页开始下标
private int start = 0;
//偏移量
private int offset = 20;
//
private int rows ;
//总页数
private int page ;
//排序
private String order ;
private String sort ;
}
第二个工具类
Util.PageUtils
package com.main.java.gbicc.entprophet.util;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings(value={"unchecked", "rawtypes"})
public class PageUtils {
private static final String LOGIN_PAGE = "/summit/login_jsp.sec";
/**
* 分页公用方法
* @param paramMap
* @param order
* @param count 总记录数
*/
public static void getPageMap(Map paramMap, PageOrder order,int count){
if (null == order) {
order = new PageOrder();
}
order.setTotalCount(count);
paramMap.put("start",(order.getPage()-1)*order.getRows());
paramMap.put("offset",order.getRows());
paramMap.put("sort", order.getSort());
paramMap.put("order",order.getOrder());
}
public static void jumpLoginPage(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\">");
builder.append("window.top.location.href='");
builder.append(LOGIN_PAGE);
builder.append("';");
builder.append("</script>");
out.print(builder.toString());
}
public static void getPageHome(Map paramMap, PageModel model, int count) {
if (null == model) {
model = new PageModel();
}
model.setTotalCount(count);
paramMap.put("start",(model.getPageNo()-1)*model.getPageSize());
paramMap.put("offset",model.getPageSize());
paramMap.put("sort", model.getSort());
paramMap.put("order",model.getOrder());
}
}
第三个工具类
package main.java.ExamSystem.utils;
public class PageModel {
//总条数
private int totalCount;
//分页开始下标
private int start = 0;
//偏移量
private int offset = 16;
//
private int pageSize = 20 ;
//总页数
private int pageNo = 1 ;
//排序
private String order ;
private String sort ;
}
Mapper的写法
<!-- 查询消息总条数 -->
<select id="selectCountAll" resultType="java.lang.Integer">
select count(*)
from qxz_customs_news_info
where custom_id = #{customId} and news_ope="0"
</select>
<!-- 通过用户名查询所有消息 -->
<select id="selectNewsByCustomId" resultMap="News" parameterType="map">
select *
from qxz_customs_news_info
where custom_id = #{customId} and news_ope="0"
order by update_date desc
<include refid="pages" />
</select>
<sql id="pages">
limit #{start},#{offset}
</sql>
Controller的写法
@RequestMapping("/selectNewsByCustomId")
@ResponseBody
public Map<String,Object> selectNewsByCustomId(HttpServletRequest req,int page){
HttpSession session = req.getSession();
CustomsInfo customInfo = (CustomsInfo) session.getAttribute("custom");
String customId = customInfo.getCustomId();
Map<String,Object> map = new HashMap<String,Object>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("customId", customId);
PageOrder order = new PageOrder();
order.setOffset(19);
order.setRows(20);
order.setPage(page);
PageUtils util = new PageUtils();
int count = newsService.selectCountAll(customId);
util.getPageMap(map1, order, count);
List<News> news = newsService.selectNewsByCustomId(map1);
map.put("news", news);
map.put("count", count);
int allCount = newsService.selectCountAll(customId);
int notReadCount = newsService.selectWeiDuCount(customId);
map.put("allCount", allCount);
map.put("notReadCount", notReadCount);
return map;
}
JS的写法
需要引入
<link rel="stylesheet" href="css/laypage.css">
<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="<%=basePath%>js/laypage.js" type="text/javascript"></script>
function news(curr){ 调用时 传1 即可
$("#newsTable").html("");
var newsTableTitle =
"<tr class='table_toubu table_yanse'>"+
"<td width='30'></td>"+
"<td width='50'>序号</td>"+
"<td>消息标题</td>"+
"<td width='130'>时间</td>"+
"<td width='50'>操作</td>"+
"</tr>";
$("#newsTable").append(newsTableTitle);
$.post("../news/selectNewsByCustomId",{"page":curr},function(data){
$('#allCount').empty().append(data.allCount);
$('#notReadCount').empty().append(data.allCount-data.notReadCount);
$.each(data.news,function(i,everyNew){
var image = null;
if(everyNew.newsType=="1"){//已读
image="../images/xx_ydxx.png";
}else{
image="../images/xx_wdxx.png";
}
var num = i+1;
var time = getMyDate(everyNew.newsTime);
var neww=
"<tr class='table_toubu'>"+
"<td><img src='"+image+"'/><input type='hidden' id='newsKeyId"+i+"' value='"+everyNew.keyId+"'></input></td>"+
"<td>"+num+"</td>"+
"<td><a href='javascript:void(0)' onclick='box(this)'>"+everyNew.newsTitle+"</a></td>"+
"<td class='tableTime'>"+time+"</td>"+
"<td><i onclick='deleteNews(this);'>删除</i></td>"+
"</tr>";
$("#newsTable").append(neww);
});
laypage({//分页
cont: 'newsfenye', //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div>
pages: Math.ceil(data.count/20), //通过后台拿到的总页数
curr: curr, //当前页
jump: function(obj, first){ //触发分页后的回调
if(!first){ //点击跳页触发函数自身,并传递当前页:obj.curr
curr=obj.curr;
news(curr);//调自身函数
}
}
})
});
}