通过项目的id进行查询结果集,进行分页。基于ssm的分页设计与实现。
第一步,自定义一个项目分页类。
public class Page<T> {
private int firstIndex;
private int pageSize=20;
private int pageCount=1;
private int totalPageCount;
private int totalDataCount;
private List<T> list;
public int getFirstIndex() {
return (this.getPageCount()-1)*this.getPageSize();
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getTotalPageCount() {
return (this.getTotalDataCount()-1)/this.getPageSize()+1;
}
public int getTotalDataCount() {
return totalDataCount;
}
public void setTotalDataCount(int totalDataCount) {
this.totalDataCount = totalDataCount;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
第二步,对mapper文件进行写sql语句
<select id="findPrjQuoteInfoByPrjId" resultMap="prjQuoteInfoResult">
SELECT
base.ID ID,
base.NAM NAM,
prj_customer.ENT_NAME ENT_NAME,
saleUser.NAM SALE_PERSON,
prj_quote_detail.BOM_NUM BOM_NUM,
prj_quote_detail.COUNTS COUNTS,
prj_quote_detail.NAM QUOTE_NAME,
sys_dic.DES_ UNIT,
prj_quote_detail.MODEL MODEL,
prj_quote_detail.QUOTE_CATEGORY QUOTE_CATEGORY,
prj_quote_detail.BRAND BRAND
FROM prj_base base
JOIN prj_customer ON prj_customer.ID=base.ID
JOIN sys_user saleUser ON saleUser.ID=base.SALE_PERSON
JOIN prj_quote_detail ON prj_quote_detail.PRJ_ID=base.id
JOIN sys_dic ON prj_quote_detail.UNIT=sys_dic.ID
WHERE base.ID=#{prjId}
LIMIT #{firstIndex},#{pageSize}
</select>
第三步、dao层代码实现
public interface PrjQuoteDetailMapper {
public List<PrjQuoteDetail> findAll(@Param("pager") Pager pager, @Param("quoteCategory") Long quoteCategory, @Param("prjId") Long prjId);
public void deleteByIds(@Param("ids") Long[] ids);
public List<PrjQuoteDetail> findPrjQuoteDetailByPrjId(@Param("prjId") Long prjId);
/**
分页查找
**/
public List<PrjQuoteInfo> findPrjQuoteInfoByPrjId(Page<PrjQuoteInfo> page,@Param("prjId") Long prjId,@Param("firstIndex") int firstIndex,@Param("pageSize")int pageSize);
public int queryCountById(@Param("prjId") Long prjId);
/**
* 通过项目的id查找出项目报价单的全部数据
* @param prjId
* @return
*/
public List<PrjQuoteInfo> findPrjQuoteInfoById(@Param("prjId") Long prjId);
}
第四步、service层
public interface PrjQuoteDetailService extends BaseService<Long, PrjQuoteDetail>{
public void updatePrjQuoteDetail(PrjQuoteDetail prjQuoteDetail)throws XpmBusinessException;
public void savePrjQuoteDetail(PrjQuoteDetail prjQuoteDetail)throws XpmBusinessException;
public List<PrjQuoteDetail> findAll(Pager pager, Long quoteCategory, Long prjId) throws XpmBusinessException;
public void deleteByIds(Long[] ids) throws XpmBusinessException;
public List<PrjQuoteDetail> findPrjQuoteDetailByPrjId(Long prjId)throws XpmBusinessException;
public Page<PrjQuoteInfo> findPrjQuoteInfoByPrjId(Page<PrjQuoteInfo> page,Long prjId)throws XpmBusinessException;
public List<PrjQuoteInfo> findPrjQuoteInfoById(Long prjId)throws XpmBusinessException;
}
service实现类
@Override
public Page<PrjQuoteInfo> findPrjQuoteInfoByPrjId(Page<PrjQuoteInfo> page, Long prjId) throws XpmBusinessException {
List<PrjQuoteInfo> list = prjQuoteDetailMapper.findPrjQuoteInfoByPrjId(page, prjId, page.getFirstIndex(), page.getPageSize());
int queryCountById = prjQuoteDetailMapper.queryCountById(prjId);
page.setTotalDataCount(queryCountById);
page.setList(list);
return page;
}
第五步、controller层
@RequestMapping("gotoPage/{id}")
public String gotoPage(@PathVariable Long id,HttpServletRequest request,Page<PrjQuoteInfo> page){
page = prjQuoteDetailService.findPrjQuoteInfoByPrjId(page, id);
PrjQuoteAttach prjQuoteAttach =prjQuoteAttachService.findPrjQuoteAttachByPrjId(id);
List<PrjQuoteInfo> PrjQuoteInfoList = prjQuoteDetailService.findPrjQuoteInfoById(id);
List<PrjQuoteInfo> pageList = page.getList();
request.setAttribute("pageList", pageList);
request.setAttribute("PrjQuoteInfoList", PrjQuoteInfoList);
request.setAttribute("page", page);
request.setAttribute("prjQuoteAttach",prjQuoteAttach);
return PAGES;
}
@RequestMapping("gotoList")
@ResponseBody//通过ajax请求返回数据
public List<PrjQuoteInfo> gotoList(Long id,HttpServletRequest request,int pageCount,Page<PrjQuoteInfo> page){
page.setPageCount(pageCount);
page = prjQuoteDetailService.findPrjQuoteInfoByPrjId(page, id);
List<PrjQuoteInfo> pageList = page.getList();
return pageList;
}
第六步、web层jsp页面
<!-- 下面是对页码的处理-->
<div align="center">
第<span id="pageCount">${page.pageCount}</span>/${page.totalPageCount}页
<c:if test="${fn:length(PrjQuoteInfoList)>20}">
<button οnclick="firstPage()">首页</button>
<button οnclick="beforePage()">上一页</button>
<button οnclick="nextPage()">下一页</button>
<button οnclick="lastPage()">尾页</button>
</c:if>
<span>总记录数:${fn:length(PrjQuoteInfoList)}条</span>
</div>
</div>
对应的js方法
var pageCount = ${page.pageCount};
var id = ${pageList[0].id}
var totalPageCount = ${page.totalPageCount};
/**
尾页
**/
function lastPage(){
pageCount = ${page.totalPageCount};
$.ajax({
type : "post",
url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
data : {
"pageCount" : pageCount,
"id" : id
},
success : function(data) {
$('#table3 tr:gt(4)').remove();
creatTableTr(data,pageCount);
}
});
$("#pageCount").html(pageCount);
}
/**
首页
**/
function firstPage(){
pageCount=1;
$.ajax({
type : "post",
url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
data : {
"pageCount" : pageCount,
"id" : id
},
success : function(data) {
$('#table3 tr:gt(4)').remove();
creatTableTr(data,pageCount);
}
});
$("#pageCount").html(pageCount);
}
/**
上一页
**/
function beforePage(){
pageCount--;
if(pageCount>1||pageCount==1){
$.ajax({
type : "post",
url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
data : {
"pageCount" : pageCount,
"id" : id
},
success : function(data) {
$('#table3 tr:gt(4)').remove();
creatTableTr(data,pageCount);
}
});
$("#pageCount").html(pageCount);
}else if(pageCount<1){
pageCount=1;
$.ajax({
type : "post",
url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
data : {
"pageCount" : pageCount,
"id" : id
},
success : function(data) {
$('#table3 tr:gt(4)').remove();
creatTableTr(data,pageCount);
}
});
$("#pageCount").html(pageCount);
}
}
function nextPage() {
debugger
pageCount++;
if(pageCount>${page.totalPageCount}){
pageCount=${page.totalPageCount};
$.ajax({
type : "post",
url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
data : {
"pageCount" : pageCount,
"id" : id
},
success : function(data) {
$('#table3 tr:gt(4)').remove();
creatTableTr(data,pageCount);
}
});
}else{
$.ajax({
type : "post",
url : top.XPM.ctx + "/project/prjQuoteInfo/gotoList",
data : {
"pageCount" : pageCount,
"id" : id
},
success : function(data) {
$('#table3 tr:gt(4)').remove();
creatTableTr(data,pageCount);
}
});
}
$("#pageCount").html(pageCount);
}
function creatTableTr(data,pageCount){
debugger
var j = 1;
for (var i = 0; i < data.length; i++) {
var bomNum = data[i].bomNum;
if (bomNum != null) {
bomNum = data[i].bomNum;
} else {
bomNum = '';
}
var quoteName = data[i].quoteName;
var model = data[i].model;
var unit = data[i].unit;
var counts = data[i].counts;
var brand = data[i].brand;
var quoteCategory = data[i].quoteCategory;
if (quoteCategory == 1) {
quoteCategory = '公司硬件';
} else if (quoteCategory == 2) {
quoteCategory = '外购仪表';
} else if (quoteCategory == 3) {
quoteCategory = '外购电气';
} else if (quoteCategory == 4) {
quoteCategory = '其他外购件';
}
var a = pageCount-1;
var z = a*20+j;
$('#table3').append(
'<tr>' + '<td style="width: 100px">' +z+'</td>' + '<td style="width: 140px">' + bomNum
+ '</td>' + '<td style="width: 220px">' + quoteName + '</td>'
+ '<td style="width: 61px">' + model + '</td>' + '<td style="width: 31px">' + unit
+ '</td>' + '<td style="width: 41px">' + counts + '</td>'
+ '<td style="width: 61px">' + brand + '</td>' + '<td style="width: 71px">'
+ quoteCategory + '</td>' + '</tr>');
j++;
}
for(var dataValue=data.length;dataValue<20;dataValue++){
$('#table3').append('<tr>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'<td>'+'</td>'+'</tr>');
}
}
传入一个pageCount,ajax把返回出的数据进行解析,从而得到自己想要的数据,遍历出来即可实现分页。