Hibernate HQL查询总结

一 导航查询(客户和联系人是一对多的关系,以客户和联系人为例)

根据ID查询要客户,如果要知道该客户所有联系人,就可以使用导航查询,代码如下:

          try
{
session = HibernateUtils.getSession();

ts = session.beginTransaction();

              代码部分

//导航查询,根据客户查询出所有的联系人

Custum custum = session.get(Custum.class,2);

Set<LinkMan> linkmans = custum.getLinkmans();

for(LinkMan lm :linkmans)
System.out.println(lm.getLkm_name()+"::"+lm.getLkm_gender());
    

                     
ts.commit();

}

二 OID 查询 ID 查询数据

                     Custum custum = session.get(Custum.class,2);
System.out.println(custum);


三  条件查询

HQL查询语句操作的是实体类和实体类属性字段,一般格式如下:from  实体类名称 where 实体类属性名1=? and(or)...

(1)添加参数,使用Query对象的setParameter方法,代码如下:

                 ts = session.beginTransaction();

 Query query = session.createQuery("from LinkMan where lkm_id=?");
       
 query.setParameter(0,6);
         
  List<LinkMan>  list = query.list();

(2)模糊查询 一般格式如下:from  实体类名称  where   实体类属性 like ?,在添加参数的时候,要加上模糊条件,代码如下:

 Query query = session.createQuery("from LinkMan where lkm_name like ?");
       
         query.setParameter(0,"%东%");
         
         List<LinkMan>  list = query.list();

(3)排序查询 一般格式如下:from  实体类名称  order  by  实体属性名 asc/desc

 Query query = session.createQuery("from LinkMan order by  lkm_id desc");

  List<LinkMan>  list = query.list();

(4)分页查询;一般的SQL语句如下:select  * from t_LinkMan limit 0,3 ,Hql不用谢HQL语句,调用函数即可实现,代码如下:

 Query query = session.createQuery("from LinkMan");
       
       //取值的开始
       query.setFirstResult(0);
       //每次取出的条数
       query.setMaxResults(3);

         List<LinkMan>  list = query.list();

(5) 投影查询:不是查询实体所有的属性,而是查询某一部分,一般形式如下:select 实体类属性1,属性2 ... from  实体类名称,注:select  后面不可以加*。

       Query query = session.createQuery("select lkm_id,lkm_name,lkm_gender from LinkMan"); 
         List<Object[]>  list = query.list();

for(Object[] lm :list)
System.out.println(Arrays.toString(lm));

(6)聚集函数的使用(count,sum,avg,max,min),select  count(*)   from  实体名称 

      Query query = session.createQuery("select count(*) from LinkMan");
Object obj = query.uniqueResult();

Long lobj = (Long)obj;(Object 不要直接转int)
int sum = lobj.intValue();





      


   






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值