您的位置:首页 > 其它

Hibernate框架基础知识第四天查询

2016-07-18 19:59 246 查看
第四天 Hibernate查询
1.HQL查询。
  主要功能:实现查询(通过查询实体的方式),所有的查询全部是在实体对象里查询的。
 1)只要实现的查询,那么都是从Query接口中去实现的。
首先就应该创建一个Query接口。
在创建Query接口的时候传入的是HQL查询语句。HQL查询语句的语法:
[select/update/delete……] from Entity [where……] [group by……] [having……][order by……]
  操作示例:
// 首先创建一个Query接口,一定通过session创建的。
                   Session session =HibernateSessionFactory.getSession();
                   String hsql = "FromCate";// HQL的语句
                   Query query =session.createQuery(hsql);
                   // 得到查询之后的结果集
                   List<Cate> list =query.list();
                   for (Cate c : list) {
                            System.out.println("分类的名称:" +c.getName());
                   }
2)HQL查询的介绍。
  A.查询某一些实体对象的属性。查询之后的结果是存取到Object[]数组里。示例:
 String hsql = "Select c.id,c.name FromCate c";// HQL的语句
        List<Object[]> list =session.createQuery(hsql).list();
        for(Object[] objs : list){
                 System.out.println("分类ID:"+objs[0]+",分类名称:"+objs[1]);
        }
B.Hibernate分页的实现。
  Query接口里的重要方法:
       1)setFirstResult:表示从哪一条数据的索引开始。
   2)setMaxResults:表示每页的最大数据量:
 示例:
String hsql ="from Cate ";
                   List<Cate> list =session.createQuery(hsql)
          .setFirstResult(pageStart) //查询结果集从哪开始          .setMaxResults(pagesize)//获取的最大数据
                   .list();
C.获取查询结果的实体对象数据。
  String hsql = "from Cate ";
                   Cate c =(Cate)session.createQuery(hsql).setMaxResults(1).uniqueResult();
D.动态参数绑定
  1)第一种方法,参数前加:符号。
   String hsql = "from Cate c Where 1=1";
                   if(id > 0){
                            hsql += " andid =:id";
                   }
                   if(!name.equals("")){
                            hsql +=" andname =:name";
                   }
                   Query query = session.createQuery(hsql);
                   if(id > 0){
                            query.setParameter("id",id);
                   }
                   if(!name.equals("")){
                            query.setParameter("name",name);
                   }
                   List<Cate> list=query.list();
2)第二种参数绑定方法,通过?作为占位符。然后后面通过占位符的索引去设置参数值(这里的参数索引是从0开始)。
示例:
String hsql ="from Cate c Where 1=1 and id=? and name like ? ";
                   Query query =session.createQuery(hsql);
                   query.setParameter(0, id);
                query.setParameter(1, "%"+name+"%");
E.更新和删除的操作示例:
1.使update Entity
       Queryquery = session.createQuery("update
Entity set name='jack'where id=1");
      int rowCount = query.executeUpdate();
2.使用delete
       Queryquery = session.createQuery("delete Entity where id < 1000");
      int rowCount = query.executeUpdate();
F:分组统计查询。
语法格式。
比如统计某个分类下的产品数量:
String hsql ="Select c.name,count(p.id) "+
" From Productp left join p.cate  c "+
" Group by c.id";// HQL的语句
 
3)QBC查询
   1)需要引入的接口Criteria。
       操作示例:
Criteria crt =session.createCriteria(Cate.class);
                   //如果需要加入条件
                   crt.add(Restrictions.eq("this.name","家电"));
            List<Cate> list = crt.list();
4)Native查询。
   查阅的语句就是本身的数据库的查询语句。
   通过SQLQuery的接口实现的。
SQLQuery sqlQuery =session.createSQLQuery("Select * From Product");
                   List<Product> list =sqlQuery.addEntity(Product.class).list();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: