查询结果直接转换为VO

简介:这是Hibernate3.2.6 原生sql 查询使用方法,将查询结果直接转换为VO,不必非要指定属性大写的详细页面,介绍了和数据库,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处

1.由于SQL语法本身的复杂,及各种数据库原生功能的多样性,HQL和QBC不能涵盖所有的查询特性,这时就需要采用原生的SQL达到期望的目的。Hibernate 完全支持直接使用数据库SQL语言进行查询,并将查询结果进行了简单的封装。不必再对ResultSet进行烦琐的操作,因为查询结果依然是由持久化对象的集合。仍然可以用面向对象的思想进行编程。

2.Hibernate 为执行本地查询提供了专门的方法,及Session的createSQLQuery(String sql),参数就是要执行的sql 语句,返回类型为Query 类型的实例.

3.以下是通过关联查询,将查询结果直接映射到非Hibernate管理的bean类PropListVO.class上方便取用。

//以下示例代码

public List queryByNativeSQL(String typeId){

try {

      String queryString = "select a.type_Id typeId,a.type_Name typeName,b.list_Name listName,b.list_Id listId from Prop_Type as a,Prop_List as b where a.type_Id = b.type_Id and  a.type_Id " + "= ?";

和 "Hibernate3.2.6 原生sql 查询使用方法,将查询结果直接转换为VO,不必非要指定属性大写" 有关的 java 编程小帖士:

strong>Registry.USERS

代表HKEY_USERS根键。

语法

public static final RegistryKey USERS;

说明

USERS根键用于保存系统中所有用户的信息。要保存计算机当前用户的信息,使用CURRENT_USER键。


--------------------------------------------------------------------------------

RegistryKey类

提供允许你读写系统注册表的方法。

package com.ms.wfc.app

public final class RegistryKey

说明

使用RegistryKey类创建和删除子键并给注册表条目指定信息。你可以使用注册表保存信息,比如应用程序的设置、最近打开过的文件路径以及版信息。要获得RegistryKey的实例,使用静态方法getBaseKey,或使用Registry类的一个成员。你不能使用new关键字创建RegistryKey类的实例。

方法

RegistryKey.close

关闭当前的键,而且,如果修改了内容,也将键值保存到注册表中。

语法

public void close()

public void close( boolean flushCache )

参数

flushCache

如果设置为true,则当修改了键值时就将键值保存到磁盘上。

说明

close方法将关闭当前正被引用的注册表键。如果你使用第二种方法并将方法的参数设置为true,则缓冲区中任何的注册表键值信息都将保存到注册表中。使用该方法关闭分配给RegistryKey对象的注册表键值,这样就可以给该对象分配不同的注册表键值。调用第一种close方法与调用第二种方法并将参数设置为true是一样的。

RegistryKey.createSubKey

创建新的子键。

语法

public RegistryKey createSubKey ( String subkey )

参数

subkey

String对象,代表要创建的子键名字或路径。

返回值

返回子键,如果操作失败,就返回null。

说明

createSubKey方法通常创建RegistryKey对象的子键并给其分配一个新的RegistryKey对象。

如果你创建的子键已经存在,就打开该键并将初始化所用的RegistryKey对象分配给它。要创建子键树,在定义新的子键时加上反斜线(\)。记住,在Java语言中,引号中的字符串要使用双反斜线。你可以使用createSubKey方法在某个注册表根键下创建一个位置来保存你的应用程序信息。

下面的例子演示了如何创建一个新子键的RegistryKey对象。它使用Registry类成员来访问CURRENT_USER根键。

RegistryKey myKey =

   Query queryObject = getSession().createSQLQuery(queryString)

 

                      .addScalar("typeId")//明确指定bean属性名返回值:名称,类型,不限制必须大写

                      .addScalar("typeName",Hibernate.STRING)

                        .addScalar("listName")//对全部或者部分的标量值不设置数据类型信息也是可以的

                        .addScalar("listId")

                      .setResultTransformer(Transformers.aliasToBean(PropListVO.class));

                  queryObject.setParameter(0, typeId);

               return queryObject.list();

} catch (RuntimeException re) {

       log.error("find by property name failed", re);

       throw re;

}finally{

         HibernateSessionFactory.closeSession();

}

}

 //以下是bean 类

public class PropListVO {
 private String typeId;
 private String typeName;
 private String listName;
 private String listId;
 /**
  * @return the typeId
  */
 public String getTypeId() {
  return typeId;
 }
 /**
  * @param typeId the typeId to set
  */
 public void setTypeId(String typeId) {
  this.typeId = typeId;
 }
 /**
  * @return the typeName
  */
 public String getTypeName() {
  return typeName;
 }
 /**
  * @param typeName the typeName to set
  */
 public void setTypeName(String typeName) {
  this.typeName = typeName;
 }
 /**
  * @return the listName
  */
 public String getListName() {
  return listName;
 }
 /**
  * @param listName the listName to set
  */
 public void setListName(String listName) {
  this.listName = listName;
 }
 /**
  * @return the listId
  */
 public String getListId() {
  return listId;
 }
 /**
  * @param listId the listId to set
  */
 public void setListId(String listId) {
  this.listId = listId;
 }
 
}

你可能感兴趣的:(sql,编程,bean,Hibernate,D语言)