Hibernate执行sql的语法如下:
Query query = getHibernateTemplate().getSessionFactory()
.getCurrentSession().createSQLQuery(sql);
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
备注:
values:为?参数
sql:要执行的sql
此时只需要query.list()即可获取查询的结果,此时的list中每个元素为Object[] 对应的是select *中的列信息,那么
如果指定返回的list已经是封装好的vo元素呢?此时借助反射可以做到如下所示:
for(int i=0;list!=null&&i<list.size();i++){
Object ob=clazz.newInstance();
Field[] fields=clazz.getDeclaredFields();
Object[] objs=((Object[])list.get(i));
for(int j=0;fields!=null&&objs!=null&&j<fields.length&&j<objs.length;j++){
fields[j].setAccessible(true);
logger.info("********fields[j].getName*******"+fields[j].getName());
fields[j].set(ob,objs[j]);
}
relist.add(ob);
}
备注:
clazz:为要封装的类型
relist:为返回的封装好vo的list
上述即可实现hibernate执行sql后自动封装成vo类
切忌:
clazz中声明的属性顺序要跟select中查询的列要一一对应
分享到:
相关推荐
总结起来,Hibernate的本地SQL查询功能为我们提供了一种灵活的方式来执行复杂的数据库操作,同时通过`addEntity()`、`addScalar()`和`Transformers.aliasToBean()`等方法,我们可以方便地将查询结果封装成Java对象,...
- 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,这些结果集将自动封装为对应的Java对象。 5. 示例: 假设我们有一个`User`实体类,对应...
在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了与数据库的交互,使得开发者...同时,它们也体现了Hibernate对SQL操作的封装,使得开发者可以更加专注于业务逻辑的实现,而不是底层的数据库交互细节。
本文将深入探讨如何在Hibernate中进行分页查询的封装,并提供相关的源码和工具使用方法。 首先,我们需要了解Hibernate中的Criteria查询,这是实现分页查询的一种方式。Criteria API允许我们以面向对象的方式构建...
在Java Web开发中,Hibernate是一个强大的对象...同时,由于Hibernate自动处理SQL,我们可以专注于业务处理,而不是数据库交互的细节。在实际的`demo`项目中,你可以找到具体的实现代码,进一步学习和理解这些概念。
总结来说,"Hibernate SQLQuery 本地查询"这篇博客可能深入介绍了如何在Hibernate中使用SQLQuery执行自定义SQL查询,以及如何通过BaseDaoSupport类来封装这些查询,以提升代码的复用性和项目开发效率。通过对SQL...
2. **SQL参数化**:类似Hibernate的预编译SQL(PreparedStatement),封装可能提供方法来防止SQL注入,并支持动态参数设置。 3. **自动结果集处理**:简化结果集的遍历和转换,例如,将结果集映射为List或单个对象...
此外,如果查询结果需要映射到多个实体类,或者返回复杂的结果集,那么处理起来可能会比较麻烦,需要手动进行结果集的封装。 在提供的压缩包文件"NativeSQLTest"中,可能包含了作者对使用Hibernate进行Native SQL...
SQL语句封装是指将复杂的、重复的SQL查询语句进行抽象和封装,以便在需要的时候方便调用,提高代码的可读性、可维护性和复用性。这一技术在开发过程中广泛应用,尤其是在大型项目或团队协作中。 **1. SQL语句封装的...
这样的类通常会有一个用于执行分页查询的方法,比如`doPagingQuery`,它接受SQL查询语句、起始索引、每页大小等参数,并返回一个自定义的分页对象,如"Page.java"所示。 `Page.java`文件可能定义了一个名为`Page`的...
Hibernate分页封装 Hibernate是一个流行的Java持久化框架,提供了对数据库的访问和操作。然而,在实际开发中,分页是一种非常常见的需求,Hibernate也提供了相应的解决方案。下面,我们将对Hibernate分页封装进行...
除了`HibernateTemplate`提供的便捷操作外,Hibernate还支持直接执行SQL语句,这为开发者提供了更大的灵活性。下面是几种常见的SQL查询方式及其应用场景: 1. **GET查询** ```java Customer cust = session.get...
首先,我们需要理解Hibernate中的`SQLQuery`接口,这是执行原生SQL查询的主要入口。通过`Session`对象的`createSQLQuery`方法,我们可以创建一个`SQLQuery`实例,然后设置SQL语句: ```java Session session = ...
例如,在`findAllbyString`方法中,使用了`getSession().createSQLQuery`方法来执行原生SQL查询: ```java String queryString = "Select * from h_attribute t where ciid=24 and Isinstance=1 and Isdisplay=1"; ...
Hibernate提供了一种便捷的事务管理方式,可以将多个数据库操作封装在一个Transaction中,保证原子性和一致性。 通过以上内容,我们了解了Hibernate的基本操作和核心概念。在实际项目中,可以根据需求选择合适的...
此外,还有一些高级的ORM(对象关系映射)框架,如Hibernate、MyBatis等,提供了更高级的SQL封装功能。这些框架允许开发者用面向对象的方式编写SQL,通过注解或XML配置文件将Java对象与数据库表映射起来,大大简化了...
然而,有时我们需要执行更复杂的SQL任务,如存储过程,这时就需要了解如何通过Hibernate来调用存储过程。下面将详细解释Hibernate调用存储过程的相关知识点。 1. **存储过程的概念** 存储过程是预编译的SQL语句...
本文将深入探讨如何对Hibernate框架进行二次封装,进一步简化数据库操作。 一、理解Hibernate基础 Hibernate是Java领域中的一种持久化框架,它提供了一种在Java应用中管理关系数据库模型的机制。它通过映射Java类到...
5. 执行查询 list() ---- 返回一个集合列表 、 uniqueResult();--- 返回一个查询结果 Query 接口支持方法链编程风格,将上面所有步骤写入一句程序代码中。 四、QBC 检索 QBC 是一种使用 Query By Criteria API 来...
- 使用`Session.createSQLQuery()`方法创建SQLQuery对象,然后通过`addScalar()`指定返回值类型,`executeUpdate()`或`list()`执行存储过程。 3. **调用存储过程的方法** - **简单调用**:对于无参数或只接收输入...