当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
JAVA基础:Hibernate数据查询(2)
发布时间:2012/4/28 16:24:55 来源:城市网学院 编辑:ziteng
  /** *//**要正确运行以上程序,需要在TRegister类中加入一个相应的构造函数
  public TRegister(String userName,String sex) {
  this.userName = userName;
  this.sex = sex;
  }
  */
  }
  统计函数查询
  可以在HQL中使用函数,经常使用的函数如下:
  count():统计记录条数。
  min():求最小值。
  max():求最大值。
  sum():求和。
  avg():求平均值。
  例如,要取得Student实例的数量,可以编写如下HQL语句:
  select count(*) from Student
  取得Student平均年龄的HQL语句:
  select avg(s.age) from Student as s
  可以使用distinct去除重复的数据:
  select distinct s.age from Student as s
  where子句:
  HQL也支持子查询,它通过where子句实现这一机制。where子句可以让用户缩小要返回的实例的列表范围。例如下面语句会返回所有名字为"Bill"的Student实例:
  Query query = session.createQuery("from Student as s where s.name='Bill'");
  where子句允许出现的表达式包括了SQL中可以使用的大多数情况。
  数学操作:+,-,*,/
  真假比较操作:=, >=, <=, <>, !=, like
  逻辑操作:and ,or, not
  字符串连接:||
  SQL标题函数 :如upper()和lower()
  如果查询返回多条记录,可以用以下关键字来量化
  all:表示所有的记录。
  any:表示所有记录中的任意一条。
  some:与any相同。
  in:与any等价。
  exists:表示子查询至少要返回一条记录。
  例如,下面语句返回所有学生年龄都大于18的班级对象
  from Group g where 18<all  (select s.age from g.students s)
  下列语句返回在所有学生中有一个学生的年龄等于22的班级:
  from Group g where 22 = any (select s.age from g.students s)
  或者
  from Group g where 22= some(select s.age from g.students s)
  或者
  from Group g where 22 in (select s.age from g.students s)
  order by子句
  查询返回列表可以按照任何返回的类或者组件的属性排序
  from Student s order by s.name asc
  连接查询
  与SQL一样,HQL也支持连接查询,如内连接,外连接和交叉连接:
  inner join:内连接
  left outer join:左外连接
  rigth outer join:右外连接
  full join:全连接,但不常用
  下面我重点介绍下内连接查询,左外连接和或外连接和内连接大同小异,而全连接几乎没有使用得到的地方。
  inner join可以简写为join,例如在查询得到的Group对象时,内连接取得对应的Student对象,实现的程序代码如下:
  Student stu = null;
  Group group = null;
  Query query = session.createQuery("from Group g join g.students");
  List list = query.list();
  Object obj[] = null;
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved