Hibernate单个实体的分页查询

第一种:单个实体分页查询


1.特征:直接返回某个实体的集合
QueryResult<Analyseset> q = analysesetManager.getQueryResult(startIndex, maxIndex, whereSB.toString(), params.toArray(), orderby);


2.实现方式


public QueryResult<T> getScrollData(int startIndex, int maxResult,String whereJPQL, Object[] params,
LinkedHashMap<String, String> orderby) throws Exception {


QueryResult<T> qr = new QueryResult<T>();
String entityName = getEntityName(this.entityClass);
String where = (whereJPQL != null && !"".equals(whereJPQL.trim())) ? "where " + whereJPQL : "";
Query query = getSession().createQuery(
"select o from " + entityName + " o " + where + buildOrderBy(orderby));


setParameter(query, params);
if (startIndex != -1 && maxResult != -1)
query.setFirstResult(startIndex)// 设置分页的起始位置
.setMaxResults(maxResult);// 设置每页显示的固定条数


qr.setResultlist(query.list());


query = getSession().createQuery(
"select count(*) from " + entityName + " o " + where);


setParameter(query, params);
qr.setTotalrecord(new Long(query.uniqueResult().toString()));
return qr;
}




/*
 * 得到具体实体名
 * 
 * @param entityClass 具体类
 */
private static <E> String getEntityName(Class<E> entityClass) {
String entityname = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if (entity.name() != null && !"".equals(entity.name()))
entityname = entity.name();
return entityname;
}


/**
 * 生成排序SQL
 * 
 * @param orderby
 *            排序属性
 */
private static String buildOrderBy(LinkedHashMap<String, String> orderby) {
StringBuilder sb = new StringBuilder();
if (orderby != null && orderby.size() > 0) {
sb.append(" order by ");
for (String key : orderby.keySet()) {
// sb.append("lower(o.").append(key).append(") ")
sb.append(key).append(" ").append(
orderby.get(key)).append(",");


}
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}


/**
 * 设置参数值
 * 
 * @param params
 *            参数值数组
 */
private static void setParameter(Query query, Object[] params) {
if (params != null) {


for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}


}





























猜你喜欢

转载自blog.csdn.net/cla1989/article/details/80984614