sqlserver实现分页的几种方式

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

package com.cellstrain.icell.repository.repositoryImpl;

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

import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import javax.persistence.Query;import java.util.List;import java.util.Map;

@Repository(value = "vPaperRepository")public class VPaperRepositoryImpl {    @Autowired    private JdbcTemplate jdbcTemplate;

@PersistenceContext    private EntityManager entityManager;

/**     * 后台分页查询     * @param condition     * @param pageable     * @return     */    public Page findByCondition(String condition, Pageable pageable){        StringBuffer hql = new StringBuffer("from V_Paper p where ");        if(!StringUtils.isEmpty(condition)){            hql.append("p.title like ‘%"+condition+"%‘ or p.entryName like ‘%"+condition+"%‘ or p.pName like ‘%"+condition+"%‘ or p.auth like ‘%"+condition+"%‘ order by p.paperId desc");        }else{            hql.append("1=1 order by p.paperId desc");        }        Query query = entityManager.createQuery(hql.toString());        //得到符合记录的总数        int count = query.getResultList().size();        Long total = (long)count;        //分页查询        query.setFirstResult(pageable.getOffset());        query.setMaxResults(pageable.getPageSize());        List<V_Paper> proteinRanksList = query.getResultList();        //封装Page        Page<V_Paper> page =new PageImpl<V_Paper>(proteinRanksList,pageable,total);    }

}

第二种:使用top关键字来进行分页
package com.cellstrain.icell.repository.repositoryImpl;

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

import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import javax.persistence.Query;import java.util.List;import java.util.Map;

@Repository(value = "vPaperRepository")public class VPaperRepositoryImpl {    @Autowired    private JdbcTemplate jdbcTemplate;

@PersistenceContext    private EntityManager entityManager;

/**     * 后台分页查询     * @param condition     * @param pageable     * @return     */    public Page findByCondition(String condition, Pageable pageable){        if(StringUtils.isEmpty(condition)){            condition="";        }        int pageSize=pageable.getPageSize();        int pageNow=pageable.getPageNumber();        String sql="select top "+pageSize+" vp.paperId,vp.title,vp.entryName,vp.source,vp.recordDate,vp.url,vp.auth,dbo.JoinStr(vp.paperId) as pNames" +                " from V_Paper vp where vp.paperId not in(select top "+pageSize*pageNow+" paperId from V_Paper order by paperId desc) and (title like ‘%"+condition+"%‘ or contents like ‘%"+condition+"%‘) " +                "group by vp.paperId,vp.title,vp.entryName,vp.source,vp.recordDate,vp.url,vp.auth order by vp.paperId desc";        List paperList=null;        Long total = jdbcTemplate.queryForObject("select count(*) from V_Paper",Long.class);        try{            paperList=jdbcTemplate.queryForList(sql);        }catch (Exception e){            e.printStackTrace();        }        Page page = new PageImpl(paperList, pageable, total);        return page;    }}
 
时间: 2024-10-06 03:25:09

sqlserver实现分页的几种方式的相关文章

Sqlserver数据库备份的几种方式

在实际的数据库Sqlserver的运维的过程中,很多时候我们需要做到数据的备份操作,可以做到定时备份,也可以进行手动数据库备份.在实际的过程中,有时候因业务需要备份出完整数据库,而有时候又因为实际业务只需要影响到一张表或者几张表,备份整个数据库未必是最优的方案,此时可采用生成脚本或者Select Into的方式对单表进行备份.DBA在运维过程中备份数据差不多用的就是以上几种操作方式,下面就详细说下这几种备份方式. (1)数据库整库备份 此方式备份数据库是最完整的,可以将数据库中所有的对象都备份下

SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步

最近在琢磨主从数据库之间的同步,公司正好也需要,在园子里找了一下,看到这篇博文比较详细,比较简单,本人亲自按步骤来过,现在分享给大家. 在这里要提醒大家的是(为了更好的理解,以下是本人自己理解,如有错误,请指出):主数据库一般是把数据发布出去,然后在连接从数据库对发布的数据进行订阅,同步到从数据库中. 1.发布.发布需要用实际的服务器名称,不能使用服务器的IP地址进行.能发布的信息包括[表].[存储过程].[用户函数]如果使用IP会有错误,如下图: 具体发布过程如下: 1.找到数据库服务器下的[

分页的2种方式

第一种 自己算~ //算出一共有多少页 // $dataCount = Db::table('cz_staff')->where($map)->where('staff_status', 'in', '1,2,3,8')->where('isdelete', 0)->count('sid'); // //dump($dataCount);exit; // //一共有多少页 // $pagemax = ceil($dataCount / $pagesize); // $respone

分页的两种方式

1.  利用row_number() 语法:select  字段1,.. row_number()  over (order by 字段) as rowno from table where 条件  and  rowno >(pageIndex-1)*pageSize and rowno<=pageIndex*pageSize select TarHandPhone from (select TarHandPhone ,ROW_NUMBER() over(order by id )as row

分页的三种方式

临时表 效率最差: DECLARE @indextable table(id int identity(1,1) PRIMARY KEY,nid int); INSERT INTO @indextable(nid) SELECT Id FROM FlightSpecialPrice AS l WITH (readpast) WHERE 1=1 ;--{0}  {1}; SELECT recrowcount=@@ROWCOUNT; SELECT * FROM @indextable as i JO

换种方式去分页(转)

为什么要换种方式分页,一个字:太慢了 分页要传入的参数,1:页号,2:行数 分页要取到的数据, 1:总行数,2:单页数据 本文的方式应该有不少老手在使用了,欢迎吐糟.拍砖! http://www.cnblogs.com/mikedeng/p/better_pagination.html

换种方式去分页

为什么要换种方式分页,一个字:太慢了 分页要传入的参数,1:页号,2:行数 分页要取到的数据, 1:总行数,2:单页数据 本文的方式应该有不少老手在使用了,欢迎吐糟.拍砖! 1.先造点测试数据: CREATE TABLE [Raw_UserInfo]( [ID] [nvarchar](36) NOT NULL, [LoginName] [nvarchar](50) NULL, [RealName] [nvarchar](50) NULL, [Mobile] [nvarchar](50) NULL

C#_批量插入数据到Sqlserver中的四种方式

先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记录的ID的值然后再进行加1运算要少.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如果表中无可避免的存在索引,我们可以通过先删除索引,然后批量插入,最后再重建索引的方式来提高效率. create database CarSYS;    go    use CarSYS;  

换种方式去分页(转)

为什么要换种方式分页,一个字:太慢了    分页要传入的参数,1:页号,2:行数    分页要取到的数据, 1:总行数,2:单页数据 http://www.cnblogs.com/mikedeng/p/better_pagination.html