精华内容
下载资源
问答
  • 分页查询抽象出的对象

    这里写图片描述
    分页查询抽象出的对象

    展开全文
  • OA-分页查询抽象最终版)一

    热门讨论 2015-09-27 16:45:55
    OA视频和SSH网上商城最大的区别是什么,不是项目的不同,是面向的对象的体现不同,最近在做一个关于OA分页抽象功能,我下面只来进行最终版的编写。 分页,这项功能在每个页面可能都会体现到,如果每个页面都有,...

           OA视频和SSH网上商城最大的区别是什么,不是项目的不同,是面向的对象的体现不同,最近在做一个关于OA分页的抽象功能,我下面只来进行最终版的编写。

    分页,这项功能在每个页面可能都会体现到,如果每个页面都有,那好我们就把分页这部分抽象,看下面代码

    页面:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    
    <div id=PageSelectorBar>
    	<div id=PageSelectorMemo>
    		页次:${currentPage}/${pageCount }页  
    		每页显示:${pageSize }条  
    		总记录数:${recordCount }条
    	</div>
    	<div id=PageSelectorSelectorArea>
    	
    		<a href="javascript: gotoPage(1)" title="首页" style="cursor: hand;">
    			<img src="${pageContext.request.contextPath}/style/blue/images/pageSelector/firstPage.png"/>
    		</a>
    		
    		<s:iterator begin="%{beginPageIndex}" end="%{endPageIndex}" var="num">
    			<s:if test="#num == currentPage"> <%-- 当前页 --%>
    				<span class="PageSelectorNum PageSelectorSelected">${num}</span>
    			</s:if>
    			<s:else> <%-- 非当前页 --%>
    				<span class="PageSelectorNum" style="cursor: hand;" onClick="gotoPage(${num});">${num}</span>
    			</s:else>
    			
    		</s:iterator>
    		
    		<a href="javascript: gotoPage(${pageCount})" title="尾页" style="cursor: hand;">
    			<img src="${pageContext.request.contextPath}/style/blue/images/pageSelector/lastPage.png"/>
    		</a>
    		
    		转到:
    		<select οnchange="gotoPage(this.value)" id="_pn">
    			<s:iterator begin="1" end="%{pageCount}" var="num">
    				<option value="${num}">${num}</option>
    			</s:iterator>
    		</select>
    		<script type="text/javascript">
    			$("#_pn").val("${currentPage}");
    		</script>
    		
    	</div>
    </div>
    
    
    <script type="text/javascript">
    	function gotoPage( pageNum ){
    		// window.location.href = "forum_show.action?id=${id}&pageNum=" + pageNum;
    		
    		$(document.forms[0]).append("<input type='hidden' name='pageNum' value='" + pageNum +"'>");
    		document.forms[0].submit();
    	}
    </script>
    

    这样我们在有分页的页面中只需写这样的一段代码就搞定了。

    <!--分页信息-->
    <%@ include file="/WEB-INF/jsp/public/pageView.jspf" %>
    

    我们来思考这么一个问题,当看SSH网上商城的时候,是不是每一个页面都会进行到计算,因为计算你数据库中数据有多少,每页显示多少条,从第几页开始显示等等,网上商城每条线都要计算一次,出现大量重复性的代码,那好,我们继续抽象,看下面代码:

    PageBean代码:

    package cn.itcast.oa.domain;
    
    import java.util.List;
    
    /**
     * 分页功能中的一页的信息
     * 
     * @author 志鹏
     * 
     */
    public class PageBean {
    
    	// 指定的或是页面参数
    	private int currentPage; // 当前页
    	private int pageSize; // 每页显示多少条
    
    	// 查询数据库
    	private int recordCount; // 总记录数
    	private List recordList; // 本页的数据列表
    
    	// 计算
    	private int pageCount; // 总页数
    	private int beginPageIndex; // 页码列表的开始索引(包含)
    	private int endPageIndex; // 页码列表的结束索引(包含)
    
    	/**
    	 * 只接受前4个必要的属性,会自动的计算出其他3个属生的值
    	 * 
    	 * @param currentPage
    	 * @param pageSize
    	 * @param recordCount
    	 * @param recordList
    	 */
    	public PageBean(int currentPage, int pageSize, int recordCount, List recordList) {
    		this.currentPage = currentPage;
    		this.pageSize = pageSize;
    		this.recordCount = recordCount;
    		this.recordList = recordList;
    
    		// 计算总页码
    		pageCount = (recordCount + pageSize - 1) / pageSize;
    
    		// 计算 beginPageIndex 和 endPageIndex
    		// >> 总页数不多于10页,则全部显示
    		if (pageCount <= 10) {
    			beginPageIndex = 1;
    			endPageIndex = pageCount;
    		}
    		// >> 总页数多于10页,则显示当前页附近的共10个页码
    		else {
    			// 当前页附近的共10个页码(前4个 + 当前页 + 后5个)
    			beginPageIndex = currentPage - 4;
    			endPageIndex = currentPage + 5;
    			// 当前面的页码不足4个时,则显示前10个页码
    			if (beginPageIndex < 1) {
    				beginPageIndex = 1;
    				endPageIndex = 10;
    			}
    			// 当后面的页码不足5个时,则显示后10个页码
    			if (endPageIndex > pageCount) {
    				endPageIndex = pageCount;
    				beginPageIndex = pageCount - 10 + 1;
    			}
    		}
    	}
    }
    
    上面代码中的一些get set方法我删除了,看到上面这个类中的方法和业务逻辑其实并不难,但是如果重复性的工作多了,这些东西也是够折磨你的。

    由于篇幅过长 小编在下篇文章中 继续为您抽象!



    展开全文
  • OA-分页查询抽象最终版)二

    热门讨论 2015-09-27 17:10:50
    上篇文章我们已经把前台和工具类PageBean抽象出来了,下面我们继续抽象:  比如我们要查询板块的信息时,我们要将板块的信息,以及是否要排序和按照什么排序都要在hql语句中声明,但是我换了一个主题信息查询呢,...

     上篇文章我们已经把前台和工具类PageBean抽象出来了,下面我们继续抽象:

          比如我们要查询板块的信息时,我们要将板块的信息,以及是否要排序和按照什么排序都要在hql语句中声明,但是我换了一个主题信息查询呢,上面那些东西我们还要继续赋值,传值,再次做了一些重复性的事情。

    还有一个问题,我们在拼接hql语句时,以及order by的时候,总是会出现语句错误,如果字段再多的话,相信大家就已经疯了,那好,我们继续来抽象,看下面代码:

    QueryHelper工具类:

    <span style="font-size:18px;">package cn.itcast.oa.util;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import cn.itcast.oa.base.DaoSupport;
    import cn.itcast.oa.domain.PageBean;
    
    import com.opensymphony.xwork2.ActionContext;
    
    /**
     * 用于辅助拼接HQL语句
     * 
     * @author 志鹏
     * 
     */
    public class QueryHelper {
    
    	private String fromClause; // FROM子句
    	private String whereClause = ""; // Where子句
    	private String orderByClause = ""; // OrderBy子句
    
    	private List<Object> parameters = new ArrayList<Object>(); // 参数列表
    
    	/**
    	 * 生成From子句
    	 * 
    	 * @param clazz
    	 * @param alias
    	 *            别名
    	 */
    	public QueryHelper(Class clazz, String alias) {
    		fromClause = "FROM " + clazz.getSimpleName() + " " + alias;
    	}
    
    	/**
    	 * 拼接Where子句
    	 * 
    	 * @param condition
    	 * @param params
    	 */
    	public QueryHelper addCondition(String condition, Object... params) {
    		// 拼接
    		if (whereClause.length() == 0) {
    			whereClause = " WHERE " + condition;
    		} else {
    			whereClause += " AND " + condition;
    		}
    
    		// 参数
    		if (params != null) {
    			for (Object p : params) {
    				parameters.add(p);
    			}
    		}
    
    		return this;
    	}
    
    	/**
    	 * 如果第一个参数为true,则拼接Where子句
    	 * 
    	 * @param append
    	 * @param condition
    	 * @param params
    	 */
    	public QueryHelper addCondition(boolean append, String condition, Object... params) {
    		if (append) {
    			addCondition(condition, params);
    		}
    		return this;
    	}
    
    	/**
    	 * 拼接OrderBy子句
    	 * 
    	 * @param propertyName
    	 *            参与排序的属性名
    	 * @param asc
    	 *            true表示升序,false表示降序
    	 */
    	public QueryHelper addOrderProperty(String propertyName, boolean asc) {
    		if (orderByClause.length() == 0) {
    			orderByClause = " ORDER BY " + propertyName + (asc ? " ASC" : " DESC");
    		} else {
    			orderByClause += ", " + propertyName + (asc ? " ASC" : " DESC");
    		}
    		return this;
    	}
    
    	/**
    	 * 如果第一个参数为true,则拼接OrderBy子句
    	 * 
    	 * @param append
    	 * @param propertyName
    	 * @param asc
    	 */
    	public QueryHelper addOrderProperty(boolean append, String propertyName, boolean asc) {
    		if (append) {
    			addOrderProperty(propertyName, asc);
    		}
    		return this;
    	}
    
    	/**
    	 * 获取生成的用于查询数据列表的HQL语句
    	 * 
    	 * @return
    	 */
    	public String getListQueryHql() {
    		return fromClause + whereClause + orderByClause;
    	}
    
    	/**
    	 * 获取生成的用于查询总记录数的HQL语句
    	 * 
    	 * @return
    	 */
    	public String getCountQueryHql() {
    		return "SELECT COUNT(*) " + fromClause + whereClause;
    	}
    
    	/**
    	 * 获取HQL中的参数值列表
    	 * 
    	 * @return
    	 */
    	public List<Object> getParameters() {
    		return parameters;
    	}
    
    	/**
    	 * 查询分页信息,并放到值栈栈顶
    	 * 
    	 * @param service
    	 * @param pageNum
    	 * @param pageSize
    	 */
    	public void preparePageBean(DaoSupport<?> service, int pageNum, int pageSize) {
    		PageBean pageBean = service.getPageBean(pageNum, pageSize, this);
    		ActionContext.getContext().getValueStack().push(pageBean);
    	}
    
    }
    </span>

    简单介绍,如果我们的参数过多,我们可以根据循环来进行赋值,这样都避免了赋值繁杂,和一些空格的错误了。

    OA系统的抽象不仅仅这些,比如一些公共的GetById(),FindAll()等等这样公共的底层方法,我们都抽象到了一个叫做DaoSupportImpl这样的实现类中,那么我们的分页功能也有这样的公共方法我们依旧抽象出来放在DaoSupportImpl实现类中,看下面代码:

    PageBean方法:

    <span style="font-size:18px;">// 公共的查询分页信息的方法(最终版)
    		public PageBean getPageBean(int pageNum, int pageSize, QueryHelper queryHelper) {
    			
    			// 参数列表
    			List<Object> parameters = queryHelper.getParameters();
    
    			// 查询本页的数据列表
    			Query listQuery = getSession().createQuery(queryHelper.getListQueryHql()); // 创建查询对象
    			if (parameters != null) { // 设置参数
    				for (int i = 0; i < parameters.size(); i++) {
    					listQuery.setParameter(i, parameters.get(i));
    				}
    			}
    			listQuery.setFirstResult((pageNum - 1) * pageSize);
    			listQuery.setMaxResults(pageSize);
    			List list = listQuery.list(); // 执行查询
    
    			// 查询总记录数量
    			Query countQuery = getSession().createQuery(queryHelper.getCountQueryHql());
    			if (parameters != null) { // 设置参数
    				for (int i = 0; i < parameters.size(); i++) {
    					countQuery.setParameter(i, parameters.get(i));
    				}
    			}
    			Long count = (Long) countQuery.uniqueResult(); // 执行查询
    
    			return new PageBean(pageNum, pageSize, count.intValue(), list);
    		}
    	
    	</span>

    大家也许会奇怪,那怎么进行具体的查询呢,比如我是板块查询,没有看到真正的hql语句和表的查询呀,当然我们一些特殊的我们会进行重写呀,比如下面这段代码,就是重写的过程:

    <span style="font-size:18px;">public PageBean getPageBeanByForum(int pageNum, int pageSize, Forum forum) {
    
    		// 查询本页的数据列表
    		List list = getSession().createQuery(//
    				"FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC, t.lastUpdateTime DESC")//
    				.setParameter(0, forum)//
    				.setFirstResult((pageNum - 1) * pageSize)//
    				.setMaxResults(pageSize)//
    				.list();
    
    		// 查询总记录数量
    		Long count = (Long) getSession().createQuery(//
    				"SELECT COUNT(*) FROM Topic t WHERE t.forum=?")//
    				.setParameter(0, forum)//
    				.uniqueResult();
    
    		return new PageBean(pageNum, pageSize, count.intValue(), list);
    	}</span>

    关于这段内容都这些了,让我很疑惑的是,在action中的hql语句,是不是会让我们的架构设计不够明确呢,hql语句应该放在底层,而不是Action呀,看下面代码:

    Action代码:

    <span style="font-size:18px;">// 准备分页信息 ,最终版
    		new QueryHelper(Topic.class, "t")//
    				// 过滤条件
    				.addCondition("t.forum=?", forum)//
    				.addCondition((viewType == 1), "t.type=?", Topic.TYPE_BEST) // 1 表示只看精华帖
    				// 排序条件
    				.addOrderProperty((orderBy == 1), "t.lastUpdateTime", asc) // 1 表示只按最后更新时间排序
    				.addOrderProperty((orderBy == 2), "t.postTime", asc) // 2 表示只按主题发表时间排序
    				.addOrderProperty((orderBy == 3), "t.replyCount", asc) // 3 表示只按回复数量排序
    				.addOrderProperty((orderBy == 0), "(CASE t.type WHEN 2 THEN 2 ELSE 0 END)", false)//
    				.addOrderProperty((orderBy == 0), "t.lastUpdateTime", false) // 0 表示默认排序(所有置顶帖在前面,并按最后更新时间降序排列)
    				.preparePageBean(topicService, pageNum, pageSize);
    </span>


    展开全文
  • Author : Spring Date :09-03-09 22:44我们在做项目的时候可以用一个查询类来解决一每个查询功能的反复的代码,下面的这个查询类只要你写一个类来继承它实现其中的ininSql()方法就行,在这上方法中写上你在执行的...

     

    Author : Spring

    Date :09-03-09 22:44

    我们在做项目的时候可以用一个查询类来解决一每个查询功能的反复的代码,下面的这个查询类只要你写一个类来继承它实现其中的ininSql()方法就行,在这上方法中写上你在执行的sql语句

    package com.spring.dao.interfaces;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.ResultSetMetaData;

    import java.sql.SQLException;

    import java.util.ArrayList;

    import java.util.Collection;

    import java.util.HashMap;

    import java.util.LinkedList;

    import java.util.List;

    import java.util.Map;

    /*

     * author:spring

     * DateTime:09.02.24 10:21

     */

    public abstract class BaseQuery {

        /*

         * 1/基本查询用到的属性

         */

        private int count;//总页数

        protected String onPage = "1";//当前页 

        protected int pageSize = 5;//每页显示条数

       

        protected Connection conn;//连接对象

        protected PreparedStatement ps;//ps

        protected ResultSet rs;//rs

        protected Map dto;//传来的数据、条件的判断

        protected StringBuilder sql;//sql语句

        protected List pars;//设置ps中的参数列表

        protected int fetchSize;//总条数

       

        protected Collection colls;

        /*

         * 2/构造方法(要一个Connection对象,一个Map dto对象)

         */

        public BaseQuery(Connection conn,Map dto){

           this.conn = conn;

           this.dto = dto;

           String page = (String)dto.get("onPage");

           if(page != null && !page.equals("")){

               this.onPage = page;        

           }

           this.initSql();

        }

        /*

         * 3/初始sql语句

         */

        public abstract void initSql();

        /*

         * 4/编译sql语句并招行

         */

        public void preparedStatement() throws SQLException{

               //编译

               ps = conn.prepareStatement(sql.toString(),ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

               //设置sql语句的参数

               if(this.pars != null){

                  int size = this.pars.size();

                  if(size>0){

                      for(int i=0;i<size;i++){

                         ps.setObject(i+1, this.pars.get(i));

                      }

                  }

               }

               //执行

               this.rs = this.ps.executeQuery();

        }

        /*

         * 5/执行返回结果集

         */

        public List queryAll() throws SQLException{

    //这个方法你可以写上你的分页等一些操作

           ArrayList arRS = null;

        this.preparedStatement();//1.先调用编译sql的方法

    ResultSetMetaData rsm = null;

     try{

                 //6.定义返回值

                 arRS = new ArrayList();

               

                 rsm = rs.getMetaData();                 

                 int size=rsm.getColumnCount();

                 Map row = null;

                 while(rs.next())

                 {

                      row = new HashMap();

                      for (int j = 1; j <=size; j++)

                      {

                           row.put(rsm.getColumnLabel(j).toLowerCase(), rs.getString(j));

                      }

                      arRS.add(row);

                      row=null;

                      rs.next();

                 }

                 return arRS;

           }finally{

               close(rs);

               close(ps);

               if(rsm != null){

                  rsm = null;

               }

           }

        }

        /*

         * 关闭ps方法

         */

        private void close(PreparedStatement ps){

           if(ps != null){

               try{

                  ps.close();

               }catch(SQLException e){

                  e.printStackTrace();

               }

           }

        }

        private void close(ResultSet rs){

           if(rs != null){

               try{

                  rs.close();

               }catch(SQLException e){

                  e.printStackTrace();

               }

           }

        }

        /*

         * .清空Collection实现类的方法

         */

        private void clear(Collection c){

           if(c != null){

               c.clear();

           }

        }

    }

    下面来用一个类继承这个抽象类看一看

    package com.spring.dao.daoimpl;

    import com.spring.system.DBUtils;

    import com.spring.system.Tools;

    public class UsersBQDAOImpl extends BaseQuery {

        public UsersBQDAOImpl(Connection conn, Map dto) {

           super(conn, dto);

        }

        /*

         * 初始化查询语句

         * @see com.spring.dao.interfaces.BaseQuery#initSql()

         */

        @Override

        public void initSql() {

           //1.初始化要执行的sql语句

           this.pars = new ArrayList();

           this.sql = new StringBuilder()

           .append("SELECT U_ID,U_NAME,U_EMAIL,U_RATING,U_STATE,B_CODEVALUE FROM V_USERS");

        }

    }

    //这个类只要继承BaseQuery.java重写initSql();方法就行,在这个方法中写上要执行的查询的sql语句;

    这样就可在执行你的业务操作了如下面我就在Action中调用一下:

    BaseQuery bq = new FoodBQDAOImpl(conn, dto);

               List rows =bq.queryAll();

     

    这样就实现了一个查询的抽象类,这样以后就可不用写那么多的查询代码了,只要有查询操作的话就可实现这个类就行了
        这里我只想让大家知道这个抽象类的用法,只要继承它就重写initSql();方法就可以实现查询功能.
      所以这里的分页你们可以自己写一个,只要在红字部分写就行了。

    展开全文
  • Mybatis实现真正分页查询

    万次阅读 2015-08-23 20:25:54
    Mybatis实现真正分页查询 MyBatis 本身是有分页查询的但是并不是真正的分页查询。它是先把数据查出来放在内存里面你要什么给你什么。 和真正的分页查询还是不一样的。如果数据太多的话。内存肯定会溢出的。那么...
  • SQL分页查询数据

    千次阅读 2014-09-24 17:55:08
    SQL分页查询有两种方式,top方式方式和row_
  • JavaWeb 分页查询的实现

    万次阅读 多人点赞 2017-05-18 23:48:28
    JavaWeb 分页查询的实现
  • Mongo 分页查询

    千次阅读 2016-07-28 09:41:12
    分页说明 以典型的列表api来说:下拉刷新是获取最新信息,然后上拉加载下一页 常见api要写的2个接口 get_latest(model,count)get_with_page(number,size) get_latest一般是取最新的数据,比如我们常见的...
  • 1.使用SSH集成开发 2.创建分页抽象业务包。 3.创建自定义标签(标签类PageTag和标签描述t32.tld)
  • Mybatis的分页查询 作用:在查询大量数据时,使用分页进行查询,也可以说是变成处理小部分的数据,把对数据库的压力把控在可控范围 步骤: 1、添加接口抽象类 /** * 分页查询,这需要使用引用类 * @return */ ...
  • ​使用方式及代码 //查询某条记录表名ts =表名Cache.getValue(表名Cache.getEndkey(),datatype + "_" + number); //清除缓存 表名Cache.delete(null...//分页查询 List<Object> list = null; if("desc".e...
  • 在某些时候,我们调用第三方接口时,他们的接口有进行分页,但是并不能满足我们的需求。 那么我们就需要自己进行分页处理。思路一般是: 第一步:获取第三方接口调用返回的所有结果(可以循环获取),具体示例参考...
  • Spring Data 查询分页 -- 分页请求参数

    千次阅读 2018-11-04 12:02:45
    针对查询分页请求和分页结果的返回,Spring 提供了相应的建模抽象并提供了相应的工具实现,这部分模型和工具包含在包spring-data-commons中,本文对这些模型和工具做一下梳理,方便在开发中使用 。 分页请求参数 ...
  • JAVA学习笔记_真假分页查询

    千次阅读 2017-08-16 21:33:52
    当要显示数据量足够大的时候,我们往往采用分页显示的处理办法。 ———————————–分页有真分页和假分页—————————————真分页: 确定要显示的数量和内容,然后每次都去数据库取出该少量数据,...
  • 分页查询 LINIT 联合查询 UNION [ALL] 查询语句执行顺序总结 表的概念
  • 适用于jhipster的自述文件
  • 项目代码设计规范总结之分页查询 如今的项目,不管是cms,crm等等诸如这类的关系管理或是内容管理系统的项目,分页是一个刚需,那有没有一个比较标准的分页功能的设计规范呢,今天在一个开源项目中...
  • SpringBoot项目中,使用MyBatis实现多条件组合分页查询 就拿淘宝来举例,当我们想要买一个手机时,会根据手机的品牌、价格、颜色等多个条件来查询,然后再分页显示数据,此时就用到了多条件组合分页查询 1、把条件封装到...
  • NULL 博文链接:https://liuzidong.iteye.com/blog/423193
  • Spring Data Jpa实现分页查询

    万次阅读 2017-11-24 19:01:36
    在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式。 1、引入起步依赖  dependency> groupId>org.spring...
  • Hibernate 高级查询技巧——分页查询

    万次阅读 2007-08-09 13:30:00
    分页查询:在应用系统开发中,尤其是Web应用系统开发中,数据分页是一项普遍而又非常重要的非功能性的技术需求。因为它对于提高系统运行效率,以及减少客户端与服务器间的通信量都有着非常非常重要的作用。但是数据...
  • Spring Data 查询分页 -- 分页结果返回

    千次阅读 2018-11-05 12:14:16
    针对数据查询中的分页请求参数和分页结果返回,Spring 做了建模抽象并提供了相应的工具实现,这部分模型和工具包含在包spring-data-commons中,本文对其中分页结果返回部分做一下梳理,方便在开发中使用 。...
  • 基于Mybatis Plus实现多表分页查询

    万次阅读 多人点赞 2019-07-29 17:03:43
    { /** * 分页查询 * @param page:mybatisPlus 原生分页查询查询SQL会自动拼接分页 * @param queryWrapper:QueryWrapper条件,注意,这里需要使用 @Param("ew") 指定mybatis参数 * @return */ IPage<ReseEntity> ...
  • 比如根据id查询,删除,查询分页查询全部信息,保存···这些可变性不大的方法,全部抽象成一个公共的父类方法,新增类只需要继承这个方法就可以了,不用再每次单独的去实现这些方法,如果有源码可以参考那就太...
  • 前面那个jsp+servlet的分页,没有封装,这次改了,把能封装的都给封装了,希望这次能让大家满意^_^
  • 其它类要调用的sql语句基本相同,只是调用的表名,要查询的关键字及值不一样,故写一个通用的调用方法,此方法其它继承类也要调用,故写进DbConn.java DbConn.java 数据库连接类package gccshop.dao;im
  • 【SSH】——封装参数不确定的分页查询

    千次阅读 热门讨论 2015-12-05 14:18:50
    【小结】 首先,本文中的分页属于真分页。真分页的原则是显示什么查...以分页为例,在业务需求增多,查询难度加大的情况下,可采用拼接sql的方式来完成分页,在拼接时,要考虑是否不易出错,程序健壮性如何等问题。
  • 【Java技术点滴】——分页查询

    千次阅读 2015-01-31 23:58:36
    项目中我们会经常用到分页查询的功能,总结他们的特点,可归结如下      我们需要的返回值:  1.实体集合(每页的记录)--结果集  2.总共记录数  3.总共多少页  4.当前页数  5.每页记录数 针对分页,我们...
  • 多条件以及分页查询的实现方法

    千次阅读 2018-07-23 20:12:00
    第一步: 初始化对象 创建返回值list及其类型,创建StringBuffer对象,注意要new ...注:以后可以将函数传值封装为对象,比如这里 创建一个查询类Query(),其成员变量为pageId,bookname,isborrow,pageNo,pageInfo。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,852
精华内容 15,140
关键字:

分页查询抽象