import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.transform.Transformers;
import com.hibernate.bean.SqlQueryBean;
import com.hibernate.bean.User;
import com.hibernate.util.HibernateUtil;
public class SqlQueryTest {
public static void main(String[] args) {
sqlQueryAddScalar();
}
static void sqlQueryAddEntity() { //获取Hibernate Session对象
Session session = HibernateUtil.getSession(); //开始事务
Transaction tx = session.beginTransaction(); //编写SQL语句
String sqlString = "select * from user"; //以SQL语句创建SQLQuery对象
List l = session.createSQLQuery(sqlString) //将查询ss实体关联的User类
.addEntity("ss", User.class) //返回全部的记录集
.list(); //遍历结果集
Iterator it = l.iterator();
while (it.hasNext()) { //因为将查询结果与Student类关联,因此返回的是Student集合
User s = (User) it.next();
String a = s.getName();
System.out.println(a);
} //提交事务
tx.commit();
session.close();
}
static void sqlQueryAddScalar() { //返回Object[]的遍历
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
String sql = "select * from user";
SQLQuery s = (SQLQuery) session.createSQLQuery(sql); //.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
s.addScalar("id", Hibernate.INTEGER); //列名, 数据类型
s.addScalar("name", Hibernate.STRING);
List list = s.list();
Object[] objects = (Object[]) list.get(0);
System.out.println(objects[0]);
System.out.println(objects[1]); //用MAP
SQLQuery ss = (SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
ss.addScalar("id", Hibernate.INTEGER);
ss.addScalar("name", Hibernate.STRING);
List list2 = ss.list();
Map map = (Map) list2.get(0);
System.out.println(map.get("name"));
System.out.println(map.get("id")); //用LIST
SQLQuery s3 = (SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.TO_LIST);
s3.addScalar("id", Hibernate.INTEGER);
s3.addScalar("name", Hibernate.STRING);
List list3 = s3.list();
List list4 = (List) list3.get(0);
System.out.println(list4.get(0));
System.out.println(list4.get(1)); //用自定义的bean
SQLQuery e = (SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(SqlQueryBean.class));
e.addScalar("id", Hibernate.INTEGER);
e.addScalar("name", Hibernate.STRING);
List r = e.list();
SqlQueryBean sqb = (SqlQueryBean) r.get(0);
System.out.println(sqb.getId());
System.out.println(sqb.getName());
}
}
引自:http://www.cnblogs.com/redant/archive/2010/01/28/1658479.html
分享到:
相关推荐
本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...
首先,本地SQL查询(Native SQL)是指直接在Hibernate中使用原生的SQL语句进行查询,而不是使用HQL(Hibernate Query Language)。这允许开发者充分利用SQL的功能,比如进行复杂的统计计算或者处理特定数据库的特性...
然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的查询语言(HQL)。本文将介绍如何使用 Hibernate 执行原生 SQL 语句。 为什么需要执行原生 SQL 语句 在实际开发中,我们可能需要执行...
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...
总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...
在这个场景中,我们将探讨如何使用Hibernate与SQL Server 2005数据库进行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要确保引入了Hibernate的依赖库。从描述中的“Hibernate 所需要的 jar 包”...
### Hibernate中使用SQL而非HQL语句的知识点详解 在Java开发中,Hibernate作为一个...通过以上分析可以看出,在Hibernate中使用原生SQL能够更灵活地处理复杂的数据库查询需求,同时也需要注意安全性和性能方面的考量。
在使用Hibernate时,可能需要关注这些潜在问题,并进行适当的优化,如调整缓存策略、查询优化等。 6. **工具支持**:标签中的“工具”可能指的是用于配置、生成模型对象或数据库操作的工具,如Hibernate Tools。...
虽然`Criteria API`主要是为了使用Hibernate的ORM功能,但也可以通过`Projections.sqlProjection()`执行原生SQL投影,从而创建自定义的查询。 ```java Criteria criteria = session.createCriteria(User.class); ...
**使用Hibernate访问SQL Server数据库** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和面向对象编程之间架起桥梁的方式。通过使用Hibernate,我们可以避免编写大量的SQL...
本篇文章将深入探讨使用Hibernate ORM框架与SQL Server 2000数据库进行分页查询的方法。 首先,Hibernate是Java领域中最流行的ORM(对象关系映射)框架之一,它允许开发者使用面向对象的方式操作数据库,减少了直接...
在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数值。通常,Hibernate默认输出的SQL语句会用问号(?)作为占位符,这在理解查询逻辑时可能会带来不便。本文将详细介绍...
虽然Hibernate提供了ORM的方式,但有时我们可能需要使用原生的SQL查询来访问数据库,尤其是当ORM无法满足复杂需求时。在Hibernate中,可以通过以下方式执行原生SQL: 1. `Session.createSQLQuery(sql)`:创建一个...
在提供的压缩包文件"NativeSQLTest"中,可能包含了作者对使用Hibernate进行Native SQL查询的一些实践案例或者测试代码。这将是一个很好的学习资源,可以深入理解如何在实际项目中应用Native SQL查询,解决复杂查询...
hibernate.dialect 是一个 Hibernate Dialect 类名,允许 Hibernate 针对特定的关系数据库生成优化的 SQL。其取值为 full.classname.of.Dialect。 2. hibernate.show_sql hibernate.show_sql 参数用于输出所有 SQL...
本文将详细讲解如何使用Hibernate来编写通用的数据库操作代码,包括插入(insert)、删除(delete)、更新(update)以及查询(select)方法。 1. 插入数据(insert) 插入数据的方法是通过调用`session.save()`...
如果查询结果包含多个字段,并且希望将这些字段封装成一个对象,则可以使用Hibernate的投影列表功能,或者手动创建一个新的类来存储查询结果。 ### 总结 本文主要介绍了Hibernate中的连表查询方法及其在实际开发中...
本教程将详细解释如何使用Hibernate将本地SQL查询的结果封装成对象,以便更好地理解和应用这项技术。 1. Hibernate ORM简介: Hibernate是一个开源的ORM框架,它为Java应用程序提供了数据持久化的解决方案。它通过...