• Hibernate查询



    HIbernate查询


    使用get方法

    使用get方法通过持久类名和ID号查找一个对象 Stu instance = (Stu) getsession() .get(“com.lovo.po.Stu”, id);

    使用createQuery方法

    使用createQuery指定查询条件

    String queryString = "from Stu as model where model." + propertyName + "= ?"; Query queryObject = getSession().createQuery(queryString); queryObject.setParameter(0, value);

    hibernate语言查询
    Hibernate Query Language,HQL
    完全面向对象的查询语句
    查询功能非常强大
    具备继承、多态和关联等特性
    Hibernate官方推荐使用HQL进行查询。

    HQL
    HQL用面向对象的方式生成SQL
    以类和属性来代替表和数据列
    支持多态
    支持各种关联
    减少了SQL的冗余
    HQL支持所有的关系数据库操作
    连接(joins,包括Inner/outer/full joins),笛卡尔积(cartesian products)
    投影(projection)
    聚合(Aggregation,max, avg)和分组(group)
    排序(Ordering)
    子查询(Subqueries)
    SQL函数(SQL function calls)

    使用HQL
    对表和字段的操作转化为对对象和属性的操作

    HQL查询非常类似于标准SQL查询

    完整的HQL语句形势如下:
    Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc

    update/delete为Hibernate3中所新添加的功能

    实体查询

    String hql=”from User(持久类) user(别名) ”;
    List list=session.CreateQuery(hql).list();

    执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回
    Hibernate的实体查询存在着对继承关系的判定 ,查询超类会检索出所有超类和子类类型实体对象所对应的数据
    与标准SQL语句相似,可以在HQL语句中使用where字

    from User user where user.age=20;
    from User user where user.age between 20 and 30;
    from User user where user.age in(20,30);
    from User user where user.name is null;
    from User user where user.name like ‘%zx%’;
    from User user where (user.age%2)=1;
    from User user where user.age=20 and user.name like ‘%zx%’;

    实体的更新和删除
    Hibernate3中对更新和删除提供灵活和更具效率的解决办法

    Transaction trans=session.beginTransaction();
    String hql=”update User user set user.age=20 where user.age=18”;
    Query queryupdate=session.createQuery(hql);
    int ret=queryupdate.executeUpdate();
    trans.commit();

    类似的方式来完成delete操作

    Transaction trans=session.beginTransaction();
    String hql=”delete from User user where user.age=18”;
    Query queryupdate=session.createQuery(hql);
    int ret=queryupdate.executeUpdate();
    trans.commit();

    分组与排序
    Order by子句 ,可以通过asc或者desc关键字指定排序方式 ,默认的排序方式为asc

    from User user order by user.name asc,user.age desc;

    Group by子句与统计查询

    String hql=”select count(user),user.age from User user group by user.age having count(user)>10 ”;
    List list=session.createQuery(hql).list();

    标准的SQL聚集函数都可以在HQL语句中使用,比如:count(),sum(),max(),min(),avg()等

  • 相关阅读:
    GO学习-(31) Go语言操作Elasticsearch
    GO学习-(30) Go语言操作kafka
    GO学习-(29) Go语言操作etcd
    Maven+Spring打Jar包
    话说Session
    Apache Server与多个独立Tomcat集成
    一套Tomcat处理多个域名请求
    Tomcat多实例
    Linux下安装MySQL
    Java Enum
  • 原文地址:https://www.cnblogs.com/z1234/p/6160581.html
Copyright © 2020-2023  润新知