您的位置:首页 > 数据库

sqlserver实现分页的几种方式

2017-04-28 14:54 387 查看
sqlserver实现分页的几种方式

第一种:使用org.springframework.data.domain.Page来进行分页

packagecom.cellstrain.icell.repository.repositoryImpl;

importcom.cellstrain.icell.entity.V_Paper;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.data.domain.Page;
importorg.springframework.data.domain.PageImpl;
importorg.springframework.data.domain.Pageable;
importorg.springframework.jdbc.core.BeanPropertyRowMapper;
importorg.springframework.jdbc.core.JdbcTemplate;
importorg.springframework.stereotype.Repository;
importorg.springframework.util.StringUtils;

importjavax.persistence.EntityManager;
importjavax.persistence.PersistenceContext;
importjavax.persistence.Query;
importjava.util.List;
importjava.util.Map;

@Repository(value="vPaperRepository")
publicclassVPaperRepositoryImpl{
@Autowired
privateJdbcTemplatejdbcTemplate;

@PersistenceContext
privateEntityManagerentityManager;

/**
*后台分页查询
*@paramcondition
*@parampageable
*@return
*/
publicPagefindByCondition(Stringcondition,Pageablepageable){
StringBufferhql=newStringBuffer("fromV_Paperpwhere");
if(!StringUtils.isEmpty(condition)){
hql.append("p.titlelike'%"+condition+"%'orp.entryNamelike'%"+condition+"%'orp.pNamelike'%"+condition+"%'orp.authlike'%"+condition+"%'orderbyp.paperIddesc");
}else{
hql.append("1=1orderbyp.paperIddesc");
}
Queryquery=entityManager.createQuery(hql.toString());
//得到符合记录的总数
intcount=query.getResultList().size();
Longtotal=(long)count;
//分页查询
query.setFirstResult(pageable.getOffset());
query.setMaxResults(pageable.getPageSize());
List<V_Paper>proteinRanksList=query.getResultList();
//封装Page
Page<V_Paper>page=newPageImpl<V_Paper>(proteinRanksList,pageable,total);
}

}

第二种:使用top关键字来进行分页

packagecom.cellstrain.icell.repository.repositoryImpl;

importcom.cellstrain.icell.entity.V_Paper;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.data.domain.Page;
importorg.springframework.data.domain.PageImpl;
importorg.springframework.data.domain.Pageable;
importorg.springframework.jdbc.core.BeanPropertyRowMapper;
importorg.springframework.jdbc.core.JdbcTemplate;
importorg.springframework.stereotype.Repository;
importorg.springframework.util.StringUtils;

importjavax.persistence.EntityManager;
importjavax.persistence.PersistenceContext;
importjavax.persistence.Query;
importjava.util.List;
importjava.util.Map;

@Repository(value="vPaperRepository")
publicclassVPaperRepositoryImpl{
@Autowired
privateJdbcTemplatejdbcTemplate;

@PersistenceContext
privateEntityManagerentityManager;

/**
*后台分页查询
*@paramcondition
*@parampageable
*@return
*/
publicPagefindByCondition(Stringcondition,Pageablepageable){
if(StringUtils.isEmpty(condition)){
condition="";
}
intpageSize=pageable.getPageSize();
intpageNow=pageable.getPageNumber();
Stringsql="selecttop"+pageSize+"vp.paperId,vp.title,vp.entryName,vp.source,vp.recordDate,vp.url,vp.auth,dbo.JoinStr(vp.paperId)aspNames"+
"fromV_Papervpwherevp.paperIdnotin(selecttop"+pageSize*pageNow+"paperIdfromV_PaperorderbypaperIddesc)and(titlelike'%"+condition+"%'orcontentslike'%"+condition+"%')"+
"groupbyvp.paperId,vp.title,vp.entryName,vp.source,vp.recordDate,vp.url,vp.authorderbyvp.paperIddesc";
ListpaperList=null;
Longtotal=jdbcTemplate.queryForObject("selectcount(*)fromV_Paper",Long.class);
try{
paperList=jdbcTemplate.queryForList(sql);
}catch(Exceptione){
e.printStackTrace();
}
Pagepage=newPageImpl(paperList,pageable,total);
returnpage;
}
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: