1、第一种方式

public class DetailDaoImpl extends HibernateTemplate implements DetailDaoInterface {

  private Log log=LogFactory.getLog(ConstantsApplication.P2PAPPLICATION_LOG);

/**
 * 查询符合条件的指定区间的记录
 */
 public List<AppInfoPO> queryApproveDetailInfo(ApproveDetailQueryModel qm, int startNumber, int maxNumber) throws APSException {

  log.info("开始查询明细……");
    try{

    DetachedCriteria c = this.getDetachedCriteria(qm);
      return  findByCriteria(c,startNumber,maxNumber);

    } catch (Exception e) {
         log.error("查询明细异常", e);
         throw new APSException("查询明细异常,在方法queryApproveDetailInfo中", e);
     }

}

/**
  * 查询符合条件的记录数
  */
 public int queryApproveDetailInfoCount(ApproveDetailQueryModel qm) throws APSException {

  log.info("开始查询审批明细……");
    DetachedCriteria d = this.getDetachedCriteria(qm);
    d.setProjection(Projections.rowCount());
    List list = this.findByCriteria(d);
    if (list != null && list.size() > 0)
     return Integer.valueOf(list.get(0).toString());
    return 0;

}

/**
 * 创建公共查询条件
 * @param qm
 * @return
 */
 public DetachedCriteria  getDetachedCriteria(ApproveDetailQueryModel qm){
      DetachedCriteria c = DetachedCriteria.forClass(AppInfoPO.class);
          if(!CommonMethod.isNull(qm.getCreditDateisnotnull())){
           c.add(Property.forName("creditDate").isNotNull());
          }

    c.addOrder(Order.asc("creditName"));
      c.addOrder(Order.desc("creditDate")); 
      return c;

}

2、SQL分页

Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();

hxzon

public List getCategorys(final int currentpage, final int pagesize) {
log.debug("finding all ShbbsCategory instances");

List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
String hql = "from ShbbsCategory";
Query query = session.createQuery(hql);
query.setFirstResult((currentpage - 1) * pagesize);
query.setMaxResults(pagesize);
List list = query.list();
return list;
}
});
return list;

}

预编译

String hql = "FROM ShbbsCategory AS p WHERE p.uid LIKE ? OR p.name LIKE ?";
Query query = session.createQuery(hql);
query.setString(0, "%" + cond + "%");
query.setString(1, "%" + cond + "%");
query.setFirstResult((currentpage - 1) * pagesize);
query.setMaxResults(pagesize);

集合总数1

public Integer getSaleChanceListCount() {

  final String hql = "select count(*) from SaleChanceInfo si";

  Query query = arg0.createQuery(hql);

  return query.uniqueResult();

}

集合总数2

String hql = "SELECT COUNT(p.id) from Person AS p WHERE p.uid LIKE ? OR p.name LIKE ?";

Query query = session.createQuery(hql);

List list = query.list();

if (list.size() > 0) {
count = (Integer) list.get(0);
}
return count;

3、通过Criteria实现分页

Criteria criteria = session.createCriteria( Class arg);

criteria.setFirstResult(offset);
criteria.setMaxResults(length);

return criteria.list();

QBC分页查询的更多相关文章

  1. Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询

    HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了 ...

  2. QBC查询、离线条件查询(DetachedCriteric)和分页查询模版

    一.QBC检索步骤 QBC检索步骤: 1.调用Session的createCriteria()方法创建一个Criteria对象. 2.设定查询条件.Expression类提供了一系列用于设定查询条件的 ...

  3. hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存

    QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...

  4. Hibernate分页查询小结

    通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询: 1.QBE(Qurey By Example)检索方式 QBE 是最简单的,但是功能也是最弱的,QBE的功能不是特别强大, ...

  5. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  6. 用Hibernate和Struts2+jsp实现分页查询、修改删除

    1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...

  7. MySQL、Oracle和SQL Server的分页查询语句

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...

  8. 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历

    分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...

  9. mysql 分页查询

    mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...

随机推荐

  1. qsort函数

    qsort函数用法举例 #include <stdio.h> #include <stdlib.h> #include <string.h> //数字比较函数 in ...

  2. Java中类型的长度

    介绍: Java中有8种基本类型,分别是boolean, char, byte, short, int, long, float, double.他们的长度固定,不是对象.对于有必要将基本类型作为对象 ...

  3. K2BPM怎么让金融数据更有意义?

    西南证券成立于1999年,是唯一一家注册地在重庆的全国综合性证券公司,也是中国第九家上市证券公司和重庆第一家上市金融机构.公司现有员工逾2000名,在全国27个省份获批设立109家证券营业部,拥有17 ...

  4. android baseActivity

    package newdemo.jeno.designdemo.activitynew; import android.os.Bundle;import android.support.annotat ...

  5. python leetcode 日记--Maximal Square--221

    题目: Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ...

  6. React Native交互组件之Touchable

    React Native交互组件之Touchable:只要在组件外面包一个Touchable组件就可以实现点击交互. TouchableHighlight:高亮触摸 当点击时,组件的透明度会改变,可以 ...

  7. windows server 2008 r2 切换windows 7主题方法

    1. 打开Powershell 里 Cmdlets 管理角色和功能Import-Module servermanager 2. 安装桌面体验Add-WindowsFeature Desktop-Exp ...

  8. Day18_集合第四天

    1.Map集合成员方法(掌握) 增加功能 V put(K key, V value) 当key在集合中不存在时,添加元素:当key在集合存在时候,替换元素 删除功能 void clear 清除所有键值 ...

  9. Gvim+Emmet.vim 那些事。

    转自:http://www.jianshu.com/p/67fa1e2114c5 背景 HTML和CSS的写法相对固定,而且重复的工作特别多,特别是尖括号实在是很烦.使用Emmet至少能帮你节省一半的 ...

  10. python数据结构与算法——队列

    队列结构可以使用数组来模拟,只需要设定头和尾的两个标记 参考自<啊哈> # 按书中的代码会出现索引越界的问题(书中申请了超量的空间) # 尝试令tai初始为len(q)-1则不会出错但少了 ...