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 的不区分大小写的排序

hibernate criteria模糊查询 怎么写

Hibernate的QBC查询有多个条件模糊查询怎么实现的?

Hibernate Criteria用法大全

Hibernate框架学习——Criteria语法

Hibernate中 Restrictions.like() 方法