QBC分页查询
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分页查询的更多相关文章
- Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询
HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了 ...
- QBC查询、离线条件查询(DetachedCriteric)和分页查询模版
一.QBC检索步骤 QBC检索步骤: 1.调用Session的createCriteria()方法创建一个Criteria对象. 2.设定查询条件.Expression类提供了一系列用于设定查询条件的 ...
- hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存
QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...
- Hibernate分页查询小结
通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询: 1.QBE(Qurey By Example)检索方式 QBE 是最简单的,但是功能也是最弱的,QBE的功能不是特别强大, ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- mysql 分页查询
mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...
随机推荐
- CodeForces 688A-Opponents
题意: Arya在学校有n个敌人(一串含有0,1的数字表示),有一个游戏规则,如果当天这n个敌人全部出席("1"代表出席,),即这串数字全部为"1",则Arya ...
- jquery替换URL参数值
由于经常会用到替换URL参数值,而网上写的方法代码都太长了,所以在这里写了一个简单的方法,供大家使用. 说明: reLoad(参数名,参数值) function reLoad(p, v) { var ...
- ArrayList与普通数组的区别
import java.util.ArrayList; public class Shuzuqubie { public static void main(String[] args){ String ...
- C#日志记录函数
错误日志记录在程序运行的实际维护中定位问题具有很大作用,日志越详细,反馈处理问题越方便. 常用的一个B/S架构下的日志函数. //日志记录函数 private void WriteLog( strin ...
- poj3268 最短路
//Accepted 1124 KB 0 ms #include <cstdio> #include <cstring> #include <iostream> # ...
- Spark源码学习1.1——DAGScheduler.scala
本文以Spark1.1.0版本为基础. 经过前一段时间的学习,基本上能够对Spark的工作流程有一个了解,但是具体的细节还是需要阅读源码,而且后续的科研过程中也肯定要修改源码的,所以最近开始Spark ...
- CSS 第四天 多重背景 变形 过渡
背景原点:background-origin 图片起始位置 border-box包括边框 padding-box边框内 content-box 内容内 **background-repeat 为no- ...
- ubuntu 14.04 安装docker
常会遇到的问题就是网络的问题,如访问https://get.docker.io/ 遇到403的问题:总结一下最简单的几条命令: $ sudo apt-get install apt-transport ...
- UVALive 7338 (树链剖分+线段树)
Problem Toll Management IV 题目大意 给一张n个点m条边的无向图,有边权.数据保证前n-1条边构成了一棵最小生成树. 要求对于每条边求出其边权上下最多浮动范围,使得最小生成树 ...
- solr导入数据库数据-tinyint数据转boolean
solr在导入mysql数据库数据时,遇到一个问题:数据类型为tinyint的数据对应不到solr中的数据类型,因此就需要将tinyint转一下. 修改schema.xml文件,如下: 1.添加boo ...