hibernate分页..doc
文本预览下载声明
通常使用的Hibernate通常是三种:hql查询,QBC查询和QBE查询:
1、QBE(Qurey By Example)检索方式
QBE是最简单的,但是功能也是最弱的,QBE的功能不是特别强大,仅在某些场合下有用。一个典型的使用场合就是在查询窗口中让用户输入一系列的查询条件,然后返回匹配的对象。QBE只支持=和like比较运算符,无法不大区间值,及其或的匹配。在这种情况下,还是采用HQL检索方式或QBC检索方式。
Java代码
/** ?
?*?@function?根据传递过来的Object,分页显示在数据库中与其匹配的记录 ?
?*?@param?pageNo ?
?*????????????当前页数 ?
?*?@param?pageSize ?
?*????????????每页显示的记录数 ?
?*?@param?object ?
?*????????????将查询条件封装为Object ?
?*?@return?将查询结果封装为Pager返回 ?
?*/??
public?Pager?findPageByExample(int?pageNo,?int?pageSize,?Object?object) 牋
{ 牋
牋牋Pager爌ager?爊ull; 牋
牋牋try牋
牋牋{ 牋
牋牋牋牋Criteria燾riteria?爐his.getSession().createCriteria( 牋
牋牋牋牋牋牋牋牋Class.forName(this.getEntity())); 牋
牋
牋牋牋牋if?object?=爊ull) 牋
牋牋牋牋{ 牋
牋牋牋牋牋牋criteria.add(Example.create(object).enableLike()); 牋
牋牋牋牋} 牋
牋
????????//?获取根据条件分页查询的总行数 ??
????????int?rowCount?=?(Integer)?criteria.setProjection( ??
????????????????Projections.rowCount()).uniqueResult(); ??
????????criteria.setProjection(null); ??
??
????????criteria.setFirstResult((pageNo?-?1)?*?pageSize); ??
???牋牋燾riteria.setMaxResults(pageSize); 牋
? ?牋牋牋牋List爎esult?燾riteria.list(); 牋
牋
牋牋牋牋pager?爊ew燩ager(pageSize,爌ageNo,爎owCount,爎esult); 牋
牋
牋牋}燾atch?RuntimeException爎e) 牋
牋牋{ 牋
牋牋牋牋throw爎e; 牋
牋牋}爁inally牋
牋牋{ 牋
牋牋牋牋return爌ager; 牋
牋牋} 牋
牋
}牋
? 注意代码的第20行,即criteria.add(Example.create(object).enableLike());这一行,需将Example.create(object)调用.enableLike()方法,不然不能模糊查询。
在BO层将需要模糊查询的列用%%串起来,不然仍然和=一样。
BO层代码:
Java代码
/** ?
?*?@function?将传递过来的参数封装成抢修人员Bean,分页查询符合条件的记录 ?
?*?@param?pageNo ?
?*????????????当前的页码 ?
?*?@param?pageSize ?
?*????????????每页显示的记录数 ?
?*?@param?mendName ?
?*????????????抢修人员的名称 ?
?*?@param?specialty ?
?*????????????抢修人员的工种 ?
?*?@param?post ?
?*????????????抢修人员的职称 ?
?*?@return?将符合条件的记录数以及页码信息封装成PagerBean返回 ?
?*/??
public?Pager?getInfoByQuery(int爌ageNo,爄nt爌ageSize,燬tring爉endName, 牋
牋牋牋牋String爏pecialty,燬tring爌ost) 牋
{ 牋
牋
牋牋EicMend爀icMend?爊ew燛icMend(); 牋
牋
显示全部