`

用hibernate的HQL(面向对象的查询语言)实现模糊查询的3种方式

    博客分类:
  • J2EE
阅读更多

以下是用hibernate的HQL(面向对象的查询语言)实现模糊查询的3种方式,其中方式一是这三中方式中最理想的方式,至少方式一可以有效的防止由于查询条件中需要参数的增多导致的代码长度太长出现代码折行的情况(代码太长会给后期的维护和测试带来很大的不便)。但是还有比他更理想的方式,因为方式一在定义strSQL时使用String ,这就势必会造成当变量过多时strSQL自身太长的问题。一个比较有效的改进办法就是将String 改进为StringBuffer来处理。

方法一:

java 代码
  1. public List<Classes> listUncertainClasses(Object OId) throws Exception{   
  2.     Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
  3.     session.beginTransaction();   
  4.     String strSQL="from Classes as a where a.classno like :name";   
  5.     Query query = session.createQuery(strSQL);   
  6.     query.setString("name""%"+OId+"%");   
  7.     List result=query.list();   
  8.     for(int i=0;i<result.size();i++){   
  9.         Classes classes=(Classes)result.get(i);   
  10.         String classname=classes.getClassname();   
  11.         String classno=classes.getClassno();   
  12.         String specName=classes.getSpeciality().getName();   
  13.         String departName=classes.getSpeciality().getDepartment().getName();   
  14.         System.out.println(departName+"\t"+specName+"\t"+classname+"\t"+classno);   
  15.     }   
  16.     session.getTransaction().commit();   
  17.     return result;   
  18. }  

方法二:

java 代码
  1. public List<Classes> listUncertainClasses_01(Object OId) throws Exception{   
  2.     Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
  3.     session.beginTransaction();   
  4.     List result=session.createQuery("from Classes as a where a.classno like '%"+OId+"%'").list();   
  5.     for(int i=0;i<result.size();i++){   
  6.         Classes classes=(Classes)result.get(i);   
  7.         String classname=classes.getClassname();   
  8.         String classno=classes.getClassno();   
  9.         String specName=classes.getSpeciality().getName();   
  10.         String departName=classes.getSpeciality().getDepartment().getName();   
  11.         System.out.println(departName+"\t"+specName+"\t"+classname+"\t"+classno);   
  12.     }   
  13.     session.getTransaction().commit();   
  14.     return result;   
  15. }  

方法三:

java 代码
  1.   public List<Classes> listUncertainClasses_02(Object OId) throws Exception{   
  2.     Session session=HibernateUtil.getSessionFactory().getCurrentSession();   
  3.     session.beginTransaction();   
  4.     List result=session.createQuery("from Classes as a where a.classno like :name").setParameter("pid",OId).list();   
  5.     for(int i=0;i<result.size();i++){   
  6.         Classes classes=(Classes)result.get(i);   
  7.         String classname=classes.getClassname();   
  8.         String classno=classes.getClassno();   
  9.         String specName=classes.getSpeciality().getName();   
  10.         String departName=classes.getSpeciality().getDepartment().getName();   
  11.         System.out.println(departName+"\t"+specName+"\t"+classname+"\t"+classno);   
  12.     }   
  13.     session.getTransaction().commit();   
  14.     return result;   
  15. }  


分享到:
评论
2 楼 danlley 2007-11-28  
是的,甚至没有try和catch,不过我觉得,要说明的问题本来就是一个小问题,如果再兴师动众是否有些过犹不及的感觉
1 楼 fulianglove 2007-09-04  
你怎么没关闭session?

相关推荐

    Hibernate HQL查询 分页查询 模糊查询.docx

    HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员能够更加专注于业务逻辑而不用深入到SQL层面。HQL支持各种复杂的查询,...

    hibernate的HQL的模糊查询

    HQL是一种面向对象的查询语言,它的语法结构与SQL类似,但更关注于对象和实体,而不是数据库表和列。HQL允许开发者直接操作Java对象,避免了直接编写SQL语句的麻烦,并且支持跨数据库的移植性。 二、HQL模糊查询...

    hql模糊查询hql模糊查询

    HQL是Hibernate框架提供的一种面向对象的查询语言,它允许开发人员以一种更接近于面向对象的方式进行数据查询操作。模糊查询作为HQL中的一项重要功能,主要用于处理那些不完全确定的数据检索需求,如用户可能只记得...

    hibernate 中HQL语句查询学习笔记

    **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及关联关系的查询。 ##### 默认数据库表和数据 在本文档...

    hibernate-hql 资料大全

    Hibernate HQL,全称为Hibernate Query Language,是Hibernate框架中用于操作对象关系映射(ORM)的查询语言。它类似于SQL,但设计目的是针对Java对象,而不是数据库表。HQL允许开发者以面向对象的方式编写查询,...

    hibernate hql语句

    HQL是一种专门为Hibernate设计的查询语言,其语法结构接近于标准SQL,但又具有面向对象的特性。HQL允许开发者以一种更为简洁、直观的方式进行数据库查询操作。与Criteria API相比,HQL提供更丰富的特性和灵活性。 #...

    hibernate的hql语句

    【hibernate的HQL语句】是Hibernate框架中用于操作数据库的重要组成部分,它是一种面向对象的查询语言,类似于SQL,但更加强调对象的概念。HQL能够处理复杂的对象关系,如继承、多态和关联,使得在进行SSH(Spring、...

    Hibernate 经常用的一些HQL语句

    HQL是Hibernate框架提供的查询语言,它允许开发者以面向对象的方式进行数据库查询,使代码更具可读性和维护性。下面将详细介绍HQL在实际开发中常用的几种用法。 #### 1. 基本查询 - **全表查询**:`String hql = ...

    struts+hibernate分页 模糊查询

    Hibernate 3是Hibernate ORM框架的一个版本,它支持面向对象编程语言特性与关系型数据库之间的映射,从而使得开发者可以通过简单的对象操作而不是复杂的SQL语句来进行数据库操作。其主要特点包括: 1. **对象关系...

    HQL语言大全 跳楼分值

    HQL(Hibernate Query Language)是Hibernate框架中的对象关系映射查询语言,它是对SQL的面向对象的封装,使得开发者可以使用面向对象的方式来查询数据库。HQL的强大在于它允许开发者以类和对象的角度来思考数据操作...

    hibernate查询

    HQL 查询是基于 SQL 的一种面向对象的查询语言,它可以实现复杂的查询操作,同时保持代码的简洁性和可读性。 **特点:** - **面向对象**:使用 HQL 可以以面向对象的方式编写 SQL 语句。 - **语法简洁**:与原生 ...

    HQL简易介绍(DOC文档)

    HQL,全称Hibernate Query Language,是Hibernate框架中推荐的主要查询语言。它是面向对象的,设计用于处理持久化对象的查询,同时借鉴了SQL的语法结构,使得开发人员能够以更接近数据库操作的方式进行数据查询。HQL...

    NHibernate HQL 条件查询

    而HQL则是NHibernate提供的一种查询语言,它允许开发人员使用类似于SQL的语法来查询数据库,同时保持了面向对象的特性。 ### NHibernate HQL条件查询详解 #### QBC(Query By Criteria)与HQL对比 在NHibernate中...

    用Hibernate框架实现的网上书店系统

    Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),类似于SQL,但面向对象。此外,还可以使用 Criteria API 或 JPA 的 Query API 进行更复杂的查询。以模糊查询为例,我们可以通过Session的...

    hibernate常用的模板方法

    HQL 是 Hibernate 提供的面向对象的查询语言,它允许开发者以类和属性而非表和列进行查询。 2. `find(String queryString, Object value)` 和 `find(String queryString, Object[] values)`: 这两个方法用于带有...

    hibernate学习笔记

    Hibernate提供了HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL。创建一个`Query`对象,如`query = session.createQuery(counthql)`,然后调用`query.list()`来执行查询并获取结果列表。...

    hibernate的jar包

    4. **查询语言**:Hibernate Query Language (HQL) 是一种面向对象的查询语言,类似于SQL,但它是针对对象而非表格。此外,Criteria API和 CriteriaBuilder 提供了更高级的查询方式。 5. **缓存机制**:Hibernate...

    最的hibernate教程从入门到精通第4篇共四篇PPT学习教案.pptx

    HQL 是 Hibernate 自己的查询语言,它允许开发者用面向对象的方式来写查询,而不仅仅是基于数据库表。HQL 与 SQL 相似,但处理的是对象和类,而不是表格和列。 本章的任务主要集中在使用 Hibernate 进行各种查询...

Global site tag (gtag.js) - Google Analytics