以下是用 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;
}
分享到:
相关推荐
Hibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询....
hql模糊查询hql模糊查询hql模糊查询hql模糊查询
Hibernate hql查询语法总结 Hibernate hql查询语法总结
Hibernate中的关联查询实际上生成的是数据库表连接查询的SQL语句
hibernate hql各类查询范例
hibernate查询之HQLhibernate查询之HQLhibernate查询之HQL
总结的hql的查询,感觉很实用 已经写成.java格式,直接复制到项目中就能看了
Hibernate HQL基础练习小列子+数据库
hibernate持久化,hql查询 关联映射
Hibernate HQL 深度历险 深入讲解Hibernate HQL 查询
Hibernate注解方式、HQL查询
Hibernate HQL.txt Hibernate HQL.txt Hibernate HQL.txt
Hibernate查询语言HQL.PPT
对hibernate的hql进行了详尽的讲解
hibernate 中HQL语句查询学习笔记
Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码
Hibernate HQL 查询 Query 资料 3个word总结的资料。
hibernate hql 语法学习的文档
Hibernate HQL查询语句总结.docx 网络下载的
hibernate HQL 查询教程 管理 Session ThreadLocal 接口的使用