`
lifan51777
  • 浏览: 15325 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA基础:Hibernate外键关联与HQL语法

阅读更多

例如对于TUser类
  1.实体查询
  String hql = " from TUser";
  执行这条语句会返回TUser以及TUser子类的纪录。
  注: 如果 TUser 类具有外键, 查询会报错!
  解决方法: select 别名.属性 from 类 as 别名. 没有别名.属性仍然报错!  
  hql = "from java.lang.Object"
  会返回数据库中所有库表的纪录。
  where 语句
  hql = "from TUser as user where user.name=’yyy’";
  其中,as可以省略也一样
  hql = "from TUser user where user.name=’yyy’";
  where子句中,我们可以通过比较运算符设定条件,如:
  =, <>, >, <, >=, <=, between, not between, in, not in, is, like等。
  2.属性查询
  List list = session.createQuery("select user.name, user.age from TUser as user").list();
  还可以在HQL中动态构造对象实例的方法,将数据封装。
  List list = session.createQuery("select new TUser(user.name, user.age) from TUser as user").list();
  Iterator it = list.iterator();
  while(it.hasNext() ) {
  TUser user = (TUser)it.next();
  System.out.println(user.getName());
  }
  但是要注意这里的TUser对象只是对name和age属性的封装,其他状态均未赋值,所以不能用它来进行更新操作。
  也可以在HQL的Select子句中使用统计函数
  "select count(*) ,min(user.age) from TUser as user"
  也可以使用distinct关键字来删除重复纪录。
  select distinct user.name from TUser as user;
  3.实体的更新与删除
  hibernate 2中需要先查询出实体,设置属性后再保存。
  hibernate 3中,提供了更灵活的方式(bulk delete/update)
  更新:
  Query query = session.createQuery("update TUser set age=18 where id=1");
  query.executeUpdate();
  删除:
  session.createQuery("delete TUser where age>=18");
  query.executeUpdate();
  4.分组与排序
  Order by子句:
  from TUser user order by user.name, user.age desc
  Group by子句和Having子句
  "select count(user), user.age from TUser user group by user.age having count(user)>10"
  5.参数邦定
  通过顺序占位符?来填充参数:
  1)hibernate 2 中通过session.find方法来填充
  session.find("from TUser user where user.name=?", "Erica", Hibernate.STRING);
  多个参数的情况:
  Object[] args = new Object[] {"Erica", new Integer(20)};
  Type[] types = new Type{Hibernate.STRING, Hibernate.INTEGER};
  session.find("from TUser user where user.name=? and user.age=?", args, types);
  2)通过Query接口进行参数填充:
  Query query = session.createQuery("from TUser user where user.name=? and user.age>?");
  query.setString(0,"Erica");
  query.setInteger(1, 20);
  通过引用占位符来填充参数:
  String hql = "from TUser where name=:name";
  Query query = session.createQuery(hql);
  query.setParameter("name","Erica");
  甚至可以将查询条件封装为一个JavaBean
  class UserQuery {
  private String name;
  private Integer age;
  //getter and setter
  }
  String hql = "from TUser where name=:name and age=:age";
  Query query = session.createQuery(hql);
  UserQuery uq = new UserQuery();
  uq.setName("Erica");
  uq.setAge(new Integer(20));
  query.setProperties(uq); //会调用里面的getter?
  query.iterate();
  6.联合查询
  也可以使用 inner join,left outer join, right out join, full join
  排列组合:form TUser, TAddress

 

 

转自:http://www.examda.com/ncre2/JAVA/fudao/20081229/08103874.html

分享到:
评论

相关推荐

    jdbc基础和参考

    JDBC:java版本的ODBC JDBC连接数据库的步骤: 1.注册驱动(加载驱动): 注册的方式: 1.使用类加载器(使用反射的方式) Class.forName(driverName); 2.实例化Driver Driver driver = new oracle.jdbc...

    Hibernate注释大全收藏

    Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } } @Entity ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    hibernate 体系结构与配置 参考文档(html)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    Hibernate+中文文档

    14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 ...

    hibernate3.2中文文档(chm格式)

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    HibernateAPI中文版.chm

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate中文详细学习文档

    符合Java习惯的关系数据库持久化 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. ...

    Hibernate 中文 html 帮助文档

    14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL...

    Hibernate参考文档

    14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 14.10. order by子句 14.11. group by子句 14.12. 子查询 14.13. HQL...

Global site tag (gtag.js) - Google Analytics