閱讀786 返回首頁    go 阿裏雲 go 技術社區[雲棲]


hibernate HQL 模煳查詢 3種方式

hibernate HQL 模煳查詢 3種方式
以下是用 hibernate的HQL(麵向對象的查詢語言)實現模煳查詢的3種方式,其中方式一是這三中方式中最理想的方式,至少方式一可以有效的防止由於查詢條 件中需要參數的增多導致的代碼長度太長出現代碼折行的情況(代碼太長會給後期的維護和測試帶來很大的不便)。但是還有比他更理想的方式,因為方式一在定義 strSQL時使用String ,這就勢必會造成當變量過多時strSQL自身太長的問題。一個比較有效的改進辦法就是將String 改進為StringBuffer來處理。

方法一:

java 代碼

public List listUncertainClasses(Object OId) throws Exception{   
    Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
    session.beginTransaction();   
    String strSQL="from Classes as a where a.classno like :name";   
    Query query = session.createQuery(strSQL);   
    query.setString("name", "%"+OId+"%");   
    List result=query.list();   
for(int i=0;i
        Classes classes=(Classes)result.get(i);   
        String classname=classes.getClassname();   
        String classno=classes.getClassno();   
        String specName=classes.getSpeciality().getName();   
        String departName=classes.getSpeciality().getDepartment().getName();   
        System.out.println(departName+"/t"+specName+"/t"+classname+"/t"+classno);   
    }   
    session.getTransaction().commit();   
return result;   
}  
方法二:

java 代碼

public List listUncertainClasses_01(Object OId) throws Exception{   
    Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
    session.beginTransaction();   
    List result=session.createQuery("from Classes as a where a.classno like '%"+OId+"%'").list();   
for(int i=0;i
        Classes classes=(Classes)result.get(i);   
        String classname=classes.getClassname();   
        String classno=classes.getClassno();   
        String specName=classes.getSpeciality().getName();   
        String departName=classes.getSpeciality().getDepartment().getName();   
        System.out.println(departName+"/t"+specName+"/t"+classname+"/t"+classno);   
    }   
    session.getTransaction().commit();   
return result;   
}  
方法三:

java 代碼

public List listUncertainClasses_02(Object OId) throws Exception{   
    Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
    session.beginTransaction();   
    List result=session.createQuery("from Classes as a where a.classno like :name").setParameter("pid",OId).list();   
for(int i=0;i
        Classes classes=(Classes)result.get(i);   
        String classname=classes.getClassname();   
        String classno=classes.getClassno();   
        String specName=classes.getSpeciality().getName();   
        String departName=classes.getSpeciality().getDepartment().getName();   
        System.out.println(departName+"/t"+specName+"/t"+classname+"/t"+classno);   
    }   
    session.getTransaction().commit();   
return result;   

最後更新:2017-04-02 06:51:32

  上一篇:go 為什麼Hibernate 3中的HQL無法查詢漢字
  下一篇:go APACHE 2.2.15+TOMCAT6.0.26配置負載均衡