六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 46|回复: 0

Hibernate Criteria简单查询实例

[复制链接]

升级  81.33%

46

主题

46

主题

46

主题

秀才

Rank: 2

积分
172
 楼主| 发表于 2013-1-27 04:49:20 | 显示全部楼层 |阅读模式
Criteria查询
Hibernate中的Criteria API提供了另一种查询持久化的方法。它让你能够使用简单的API动态的构建查询,它灵活的特性通常用于搜索条件的数量可变的情况。
Criteria查询之所以灵活是因为它可以借助Java语言,在Java的帮助下它拥有超越HQL的功能。Criteria查询也是Hibernate竭力推荐的一种面向对象的查询方式。
Criteria查询的缺点在于只能检索完整的对象,不支持统计函数,它本身的API也抬高了一定的学习坡度。
Criteria查询示例代码

Session session=HibernateUtil.getSession();Criteria criteria=session.createCriteria(User.class);  // 条件一:名称以关开头criteria.add(Restrictions.like("name", "关%"));// 条件二:email出现在数组中String[] arr={"1@2.3","2@2.3","3@2.3"};criteria.add(Restrictions.in("email", arr));// 条件三:password等于一criteria.add(Restrictions.eq("password", "1"));// 排序条件:按登录时间升序criteria.addOrder(Order.asc("lastLoginTime"));List<User> users=(List<User>)criteria.list();System.out.println("返回的User实例数为"+users.size());for(User user:users){System.out.println(user);}  HibernateUtil.closeSession(session);
 Criteria查询实际产生的SQL语句
select    this_.ID as ID0_0_,    this_.name as name0_0_,    this_.pswd as pswd0_0_,    this_.email as email0_0_,    this_.lastLoginTime as lastLogi5_0_0_,    this_.lastLoginIp as lastLogi6_0_0_ from    USERTABLE_OKB this_ where    this_.name like '关%'     and this_.email in (        '1@2.3', '2@2.3', '3@2.3'    )     and this_.pswd='1'order by    this_.lastLoginTime as 
c
注:参数是手工加上的。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表