打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hibernate入门之Criteria 查询
Criteria 查询
 Hibernate支持一种符合Java撰写习惯的查询API,使用Session建立一个net.sf.hibernate.Criteria,您可以在不使用SQL甚至HQL的情况下进行对数据库的查询。
 我们以之前所练习过的第一个Hibernate程序完成的结果为例:
入门 02 - 第一个Hibernate程序
 如果要使用Criteria来查询所有的User数据,则如下撰写:
Criteria crit = session.createCriteria(User.class);
List users = crit.list();
for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) {
User user = (User) iterator.next();
System.out.println("name: " + user.getName());
System.out.println("age: " + user.getAge());
}
 如果我们要为查询限定条件,则可以透过net.sf.hibernate.expression.Expression设定查询条件,Expression拥有许多条件查询方法,举个实际的例子说明:
Criteria crit = session.createCriteria(User.class);
crit.add(Expression.ge("age", new Integer(25)));
List users = crit.list();
 Expression的ge()方法即great-equal,也就是大于等于(>=),在上例中我们设定查询age属性大于等于25的User数据。
 您也可以设定多个查询条件,例如:
crit.add(Expression.gt("age", new Integer(20)));
crit.add(Expression.between("weight", new Integer(60),new Integer(80)));
List users = crit.list();
 上例中我们查询age大于20,而weight介于60到80之间的User。
 您也可以使用逻辑组合来进行查询,例如:
crit.add(Expression.or(
Expression.eq("age", new Integer(20)),
Expression.isNull("age")
));
List users = crit.list();
 如果要对结果进行排序,可以使用net.sf.hibernate.expression.Order,例如:
List cats = session.createCriteria(User.class)
.add(Expression.ge("age", new Integer(20));
.addOrder( Order.asc("name") )
.addOrder( Order.desc("age") )
.setMaxResults(50)
.list();
 setMaxResults()方法可以限定查询回来的笔数,如果配合setFirstResult()设定传回查询结果第一笔数据的位置,就可以实现简单的分页,例如:
Criteria crit = session.createCriteria(User.class);
crit.setFirstResult(51);
crit.setMaxResult(50);
List users = crit.list();
 上面的例子将传回第51笔之后的资料(51到100)。
 实际上,Criteria、Expression、Order等是对SQL进行了封装,让Java程序设计人员可以用自已习惯的语法来撰写查询,而不用使用HQL或SQL(有兴趣的话,可以在组态文件中设定显示SQL,看看对应的SQL),然而Criteria在Hibernate中功能还不是很完美,只能实现一些较为简单的查询,对于查询,Hibernate仍鼓励使用HQL作为查询的首选方式。
 Criteria的使用相当简单,这边只介绍一些基本,有兴趣的话,在Hibernate参考手册的第12章中介绍有更多的查询方式。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hibernate之数据检索
Hibernate 复合查询 - Winbomb - 网易博客
hibernate Restrictions用法
Hibernate HQL vs QBC查询
[转] Hibernate3的DetachedCriteria支持 - 影寻 - 网易博客
Hibernate的DetachedCriteria使用(含Criteria)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服