加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Hibernate的核心接口 --- Query查询分析

发布时间:2021-11-24 19:02:45 所属栏目:教程 来源:互联网
导读:一 概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句。 2.HQL是Hibernate Query Language的简写,HQL采用面向对象的查询方式,HQL查询提供了更加丰富和灵活的查询特征,因此Hibernate将

一 概念介绍
 
1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句。
 
2.HQL是Hibernate Query Language的简写,HQL采用面向对象的查询方式,HQL查询提供了更加丰富和灵活的查询特征,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装
 
二 方法使用
 
    Criteria的创建方式:
 
    Criteria crit = session.createCriteria(DomainClass.class);
 
    简单属性条件如:
 
criteria.add(Restrictions.eq(propertyName, value)),
 
    criteria.add(Restrictions.eqProperty(propertyName,otherPropertyNa  me))
 
    //分页的查询
 
    query.setFirstResult(0);//从第0行开始
 
    query.setMaxResults(4);//最多显示几行记录
 
query.setString("n", name);//为占位符赋值
 
三 代码应用
 
    public static void query(String name) {
 
       Session session = null;
 
       try {
 
           session = HibernateUtil.getSession();
 
//定义hql语句,目的是:通过name查询所有
 
           String queryString = "from User as user where user.name=:n";     
 
          Query query = session.createQuery(queryString);
 
           query.setString("n", name);
 
           //查询出所有的name相同的
 
           List<User> list = query.list();// 得到所有的结果集
 
           for (User u : list) {
 
              System.out.println(u.toString());
 
           }
 
       } finally {
 
           if (session != null) {
 
              session.close();
 
           }
 
       }
 
    }
 
注:
 
1.在定义Hql时,如果定义的语句为
 
String queryString = "from User as user where user.name=?";
 
在位占位符赋值的时候是:
 
query.setString(0, name);
 
这样会出现的问题是:如果为多个占位符赋值,可能会出错,所以用上面的方法比较保险,可读性好。
 
2.Hql语句中的分析:
 
(1)查询的是所有的User所对应的记录   
 
(2)user是别名    
 
(3)name是类中的属性名   
 
(4)name=:n是给?起的名字,为了防止赋值的时候乱
 
3.最重要的HQL的语句为
 
    String queryString = "from User as user where user.name=:n";       Query query = session.createQuery(queryString);
 
    query.setString("n", name);

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读