hibernate使用criteria怎么实现排序分组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate使用criteria怎么实现排序分组相关的知识,希望对你有一定的参考价值。
参考技术A /*** 使用对象的查询方法
*
* @param c:查询的类
* @param obj:查询的对象
* @param orber:按那个字段排序
* @param row:每页多少条记录
* @param page:第几页
* @return List: 集合
*/
public List find(Class c, Object obj, String[] orber, int row, int page)
List list = null;
try
Criteria criteria = HibernateSessionFactory.getSession()
.createCriteria(c);
if (obj != null)
Example example = Example.create(obj);
example.enableLike(MatchMode.ANYWHERE);// 匹配模式,使用模糊查询必填项。
example.excludeNone();// 空的不做查询条件
example.excludeZeroes();// 0不要查询
example.ignoreCase(); // 不区分大小写
criteria.add(example);
if (row > 0 && page > 0)
criteria.setMaxResults(row);// 最大显示记录数
criteria.setFirstResult((page - 1) * row);// 从第几条开始
// 判断是否有排序请求,如果有加入到排序方法中
if (orber != null)
for (int i = 0; i < orber.length; i++)
criteria.addOrder(Order.desc(orber[i]));
list = criteria.list();
return list;
catch (HibernateException e)
e.printStackTrace();
return null;
finally
HibernateSessionFactory.closeSession();
/**
* 使用HQL查询语句
*
* @param hql:hql语言
* @param row:每页显示多少记录
* @param page:显示第几页
* @param params:
* 所传的对应参数
* @return List: 返回集合
*/
public List find(String hql, int row, int page, ArrayList params)
try
query = HibernateSessionFactory.getSession().createQuery(hql);
if (null != params) // 循环把给参数赋值
for (int i = 0; i < params.size(); i++)
query.setParameter(i, params.get(i));
if (row > 0 && page > 0)
query.setMaxResults(row);// 每页显示多少条记录
query.setFirstResult((page - 1) * row);// 显示第几条记录
return query.list();
catch (HibernateException e)
e.printStackTrace();
return null;
finally
HibernateSessionFactory.closeSession();
Hibernate学习笔记---Criteria接口
Criteria接口
Criteria查询通过面相对向的设计,将数据查询条件封装为一个对象。在hibernate执行时会把criteria指定的查询恢复相应的sql语句。
条件查询
Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.eq("uid",2));//add用来设置条件值,add里面实现条件 List<User> list =criteria.list();
常用的方法
排序查询
addOrder()方法
Criteria criteria = session.createCriteria(User.class); criteria.addOrder(Order.desc("uid"));//根据uid降排列
分页查询跟hql分页一样(详情看上节)
createCriteria()方法
实现联合查询
Criteria criteria = session.createCriteria(User.class); .add(Restrictions.eq("name","jack")); .createCriteria("role"); .add(Restrictions.eq("rolename","admin"));
setProjecttion()方法
主要完成聚合查询和分组查询
rowCount行数 , sum 相加, avg 平均, max 最大 ,min 最小 等
Criteria criteria = session.createCriteria(User.class); .setProjecttion(Projections.projectionList() .add( Projections.rowCount() ) .add( Projections.avg("age") ) )
uniqueResult()方法
得到唯一查询结果
Criteria criteria = session.createCriteria(User.class); .add(Restrictions.idEq("2")) .uniqueResult();
以上是关于hibernate使用criteria怎么实现排序分组的主要内容,如果未能解决你的问题,请参考以下文章
使用 Hibernate Criteria 的不区分大小写的排序