zoukankan      html  css  js  c++  java
  • sqlserver实现分页的几种方式

    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;
    }
    }
     
  • 相关阅读:
    你不一定懂的cpu显示信息
    WebService之nginx+(php-fpm)结构模型剖析及优化
    Linux企业运维人员最常用150个命令汇总
    企业级Tomcat部署实践及安全调优
    CentOS 7.X 系统安装及优化
    Linux Sysstat性能监控工具安装及常见8个命令使用例子
    Linux监控命令整理(top,free,vmstat,iostat,mpstat,sar,netstat)
    Tomcat+redis+nginx配置
    循环控制-链表删除结点
    循环控制-链表反转(与创建链表)
  • 原文地址:https://www.cnblogs.com/qianzf/p/6781618.html
Copyright © 2011-2022 走看看