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