`

Hibernate中根据QueryName查询

 
阅读更多

Hibernate中提供一种可以把HQL配置在Hibenate.hbm.xml中. 这样的好处,可以统一进行管理. 以及可以在其他Service中都能用到.

 

比如我们在User.hbm.xml中配置如下HQL语句:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
 <class name="pack.java.model.UserInfo" schema="MBADMIN" table="USER_INFO">
  <id name="uiid" type="java.lang.Long">
   <column name="UIID" precision="10" scale="0"/>
   <generator class="sequence">
    <param name="sequence">seq_user_info</param>
   </generator>
  </id>
  <property generated="never" lazy="false" name="username" type="java.lang.String">
   <column length="20" name="USERNAME" not-null="true"/>
  </property>
  <property generated="never" lazy="false" name="password" type="java.lang.String">
   <column length="15" name="PASSWORD"/>
  </property>
  <property generated="never" lazy="false" name="groups" type="java.lang.String">
   <column length="20" name="GROUPS"/>
  </property>
  <property generated="never" lazy="false" name="email" type="java.lang.String">
   <column length="48" name="EMAIL"/>
  </property>
  <property generated="never" lazy="false" name="status" type="java.lang.String">
   <column length="1" name="STATUS"/>
  </property>
  <property generated="never" lazy="false" name="lastlogintime" type="java.lang.String">
   <column length="23" name="LASTLOGINTIME"/>
  </property>
  <property generated="never" lazy="false" name="failcount" type="java.math.BigDecimal">
   <column name="FAILCOUNT" precision="22" scale="0"/>
  </property>
  <property generated="never" lazy="false" name="locktime" type="java.lang.String">
   <column length="23" name="LOCKTIME"/>
  </property>
 </class>
 <query name="query_user_by_username">from UserInfo U where U.username = ?</query>
</hibernate-mapping>

 

   然后,在Service中通过定义一个变量引用query中的name即可.

 

	private static final String QUERY_USER_BYNAME = "query_user_by_username";

public List<UserInfo> queryUserByName(String name) {
		// TODO Auto-generated method stub
		List<UserInfo> list = new ArrayList<UserInfo>();
		try {
			list = userDao.queryUserByName(QUERY_USER_BYNAME, name);
		} catch (DatabaseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("查询出现异常!");
		}
		return list;
	}

 

 

   UserDao中的方法如下:

  

public List<UserInfo> queryUserByName(String queryName,Objcect...objects)
	throws DatabaseException {
		Query query = getSession().getNamedQuery(queryName);
  if(objects!=null && objects.length > 0 ){
   for(int i = 0 ;i<objects.length;i++){
    query.setParameter(i, objects[i]);
   }
  }
  return query.list();	}

 

分享到:
评论

相关推荐

    hibernate公共查询

    - `findByNamedQuery(queryName, params)`: 使用预定义的命名查询,这些查询可以在`hbm.xml`映射文件中定义,或通过`@NamedQuery`注解在实体类上声明。 - `countByExample(entity)`: 计算满足特定条件的记录数,...

    Hibernate的Template方法以及SQL简介

    - `List findByNamedQuery(String queryName)`:根据命名查询返回实体集合。 - `Object get(Class entityClass, Serializable id)`:根据主键加载特定持久化类的实例。 3. **插入与更新操作** - `void save...

    hibernate全面总结文档

    - 命名查询(Named Query)是预定义的 HQL 查询,可以在 XML 映射文件中定义,然后通过 `session.getNameQuery("queryName")` 调用。 7. **查询结果处理**: - `uniqueResult()` 返回查询结果的唯一对象,如果...

    第24次课-1 Spring与Hibernate的整合

    List findByNamedQuery(String queryName):根据命名查询返回实例集合 Object get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例 24.3 Spring对Hibernate的简化 24.3.3 HibernateTemplate的...

    hibernate模板类详解

    `findByExample`方法将根据这些属性值查找数据库中相匹配的记录。需要注意的是,如果示例实体中的某些属性为空,则不会将这些属性纳入查询条件。 #### 五、findByExample(Object exampleEntity, int firstResult, ...

    hibernate模拟hibernatetemplate

    6. **查询支持**:除了基本的CRUD操作,还可以添加支持HQL(Hibernate查询语言)和SQL查询的方法,如`findByNamedQuery(String queryName, Object... params)`和`executeSQLQuery(String sql, RowMapper rowMapper, ...

    Spring中常用的hql查询方法

    在Spring框架与Hibernate技术结合使用时,HQL(Hibernate Query Language)作为对象查询语言被广泛应用于数据查询操作之中。本文将详细解析Spring框架中常用的HQL查询方法及其应用场景。 #### 一、find(String ...

    HbernateTemplate的使用.pdf

    - `List find(String queryString)`:根据HQL(Hibernate Query Language)查询语句返回对象集合。 - `List findByNamedQuery(String queryName)`:通过预先定义的命名查询返回对象集合。 3. **获取与加载** - `...

    javaee源代码ssh

    - `List findByNamedQuery(String queryName)`:根据预先定义的命名查询返回实例集合。 - `Object get(Class entityClass, Serializable id)`:通过主键加载特定持久化类的实例。 - `void save(Object entity)`:...

    Spring中hql语句的常用方法

    例如,本例中查询名字为“test”的所有用户。 3. **find(String queryString, Object[] values)**:此方法接受一个HQL字符串及多个值作为参数,返回符合条件的结果列表。 - 示例代码: ```java String hql = ...

    HibernateTemplate的方法使用

    - **功能**:执行命名查询,即在 Hibernate 配置文件中定义的查询。 - **示例代码**: ```java List&lt;User&gt; users = template.findByNamedQuery("findUsersByAge"); ``` 6. **get(Class entityClass, ...

    getHibernateTemplate()使用方法

    Spring框架进一步封装了Hibernate,提供了`getHibernateTemplate()`方法,使得在Spring环境中使用Hibernate变得更加便捷。本文将详细介绍`getHibernateTemplate()`的使用方法,并通过具体的代码示例帮助读者更好地...

    hibernateTemplate和HibernateDaoSupport

    4. `findByNamedQuery(String queryName)`: 根据预先定义的命名查询返回实例集合。 5. `get(Class entityClass, Serializable id)`: 根据主键加载特定持久化类的实例。 6. `save(Object entity)`: 保存新的实例到...

    HibernateTemplate及generator用法.docx

    - `findByNamedQuery(String queryName)`: 根据命名查询返回实例集合。 - `get(Class entityClass, Serializable id)`: 根据主键加载特定持久化类的实例。 - `save(Object entity)`: 保存新的实例。 - `...

    hibernateDaoSurpport和hibernateTemplate

    - **List findByNamedQuery(String queryName)**:根据命名查询返回实例集合。 - **T get(Class&lt;T&gt; entityClass, Serializable id)**:根据主键加载特定持久化类的实例。 - **void save(Object entity)**:保存新的...

    hibernateTemplate

    - `List findByNamedQuery(String queryName)`:根据命名查询返回结果集。 - `Object get(Class entityClass, Serializable id)`:根据主键加载特定持久化类的实例。 这些方法简化了数据访问层的实现,使开发者...

    HibernateTemplate 的常规用法.doc

    4. `List findByNamedQuery(String queryName)`: 使用预先定义好的命名查询来获取结果集。 5. `Object get(Class entityClass, Serializable id)`: 根据指定的类和主键值加载对象。 6. `void save(Object entity)`...

    我的智囊团(SSH)01--07学习笔记

    - `List findByNamedQuery(String queryName)`:根据预先定义的命名查询返回实例集合。 3. **加载与保存操作**: - `Object get(Class entityClass, Serializable id)`:通过主键加载特定持久化类的实例。 - `...

    HibernateTemplate的用法总结

    4. **`List findByNamedQuery(String queryName)`**:根据命名查询执行HQL查询并返回结果列表。命名查询是在映射文件中定义的,使用此方法可以提高代码的可读性和维护性。 5. **`Object get(Class entityClass, ...

Global site tag (gtag.js) - Google Analytics