`
入云涛
  • 浏览: 156040 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate中执行SQL语句的方法

阅读更多
在使用hibernate的时候,有的时候需要用sql语句来执行,而HibernateDaoSupport方便了操作后,执行sql时候遇到不能执行的问题,
下列方法是一个内部类来执行sql,可以写一个通用方法来执行sql,通常如果没有必要尽量不使用sql,但是有的时候就必须使用了,就想下列的查询分组查询,不想在hibernate中使用一对多关系,而又必须使用group by 哪么只能使用下列方式,
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public List<KnowledgeQueryBean> getKnowledgeQueryInfo() {
		List<KnowledgeQueryBean> ListAll = new ArrayList<KnowledgeQueryBean>();
		final String sql = "SELECT  ky.KNOWLEDGEQUERYID,ky.TITILE,ky.CREATEDATE,eu.USERNAME ,ky.USERID,COUNT(kyr.KNOWLEDGEQUERYID) AS COUNT"+
				" FROM  KNOWLEDGEQUERY ky LEFT JOIN KNOWLEDGEQUERYANSWER kyr ON  ky.KNOWLEDGEQUERYID =  kyr.KNOWLEDGEQUERYID" +
				" LEFT JOIN EOM_USER eu  ON ky.USERID = eu.USER_ID"+
				" GROUP BY ky.KNOWLEDGEQUERYID,ky.TITILE,ky.CREATEDATE,eu.USERNAME,ky.USERID ORDER BY ky.CREATEDATE DESC";
		ListAll = (List<KnowledgeQueryBean>)this.getHibernateTemplate().execute(
				new HibernateCallback(){
					public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
					Connection con = session.connection();
					PreparedStatement ps = con.prepareStatement(sql);
					ResultSet rs = ps.executeQuery();
					List<KnowledgeQueryBean> all = new ArrayList<KnowledgeQueryBean>();
					while(rs.next()){
						KnowledgeQueryBean kqb = new KnowledgeQueryBean();
						kqb.setKnowledgeQueryId( rs.getLong("KNOWLEDGEQUERYID"));
						kqb.setTitle(rs.getString("TITILE"));
						kqb.setCreateDate(rs.getDate("CREATEDATE"));
						kqb.setContent(rs.getString("USERNAME"));
						kqb.setUserId(rs.getLong("USERID"));
						kqb.setCount(rs.getInt("COUNT"));
						all.add(kqb);
					}
					rs.close();
					ps.close();
					session.flush();
					session.close();
					return all;
					}
				}
		);
		return ListAll;
	}
分享到:
评论
2 楼 julysohu 2011-03-24  
谢谢啦  牛人 呵呵
1 楼 XingShiYiShi 2010-11-06  
好,哥们,你太牛了。。解决2我一大问题!!!!哈谢谢了啊!!!!!

相关推荐

    hibernate执行原生sql语句

    "hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...

    Hibernate中Sql语句

    给定代码示例中的`ProductBoxLogDaoImpl`类展示了如何在Hibernate中执行原生SQL查询,并将结果转换为Java对象列表。 ##### 1. 创建SQLQuery对象 ```java SQLQuery query1 = session.createSQLQuery(sql); ``` 这里...

    Hibernate调用配置文件中的sql语句

    本篇将深入探讨如何在Hibernate中调用配置文件中的SQL语句,以此提高代码的可维护性和灵活性。 首先,理解Hibernate的核心概念至关重要。Hibernate是一个对象关系映射(ORM)框架,它将Java对象与关系数据库中的...

    hibernate 执行原生sql的几种方式

    Hibernate的`Session`接口提供了`createSQLQuery()`方法,允许我们直接编写SQL语句。例如: ```java Session session = sessionFactory.openSession(); SQLQuery query = session.createSQLQuery("SELECT * FROM...

    让hibernate输出sql语句参数配置.doc

    hibernate.use_sql_comments 参数用于如果开启,Hibernate 将在 SQL 中生成有助于调试的注释信息。其取值为 true 或 false。 14. hibernate.jdbc.fetch_size hibernate.jdbc.fetch_size 参数用于指定 JDBC 抓取...

    Hibernate生产SQL语句

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者通过面向对象的方式操作数据库,而无需直接编写SQL语句。本文将深入探讨如何模仿Hibernate生成SQL语句,以及如何利用Java反射技术来...

    hibernate实现动态SQL查询

    本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...

    hibernate执行外部sql

    4. **设置参数和类型**:如果SQL语句包含参数,使用`setXXX()`方法(如`setString()`, `setInt()`)为它们设置值,这些方法的第二个参数是参数的位置,通常是基于SQL语句中的问号(?). 5. **执行查询并处理结果**:...

    采用p6spy完整显示hibernate的SQL语句

    8. 之后,P6Spy将在指定的日志文件(如`c:/spy.log`)中记录所有的数据库操作,包括完整的SQL语句和执行详情。 通过P6Spy,我们可以得到诸如SQL语句的原始格式、执行时间、异常信息等详细信息,这对于分析和优化...

    Java打印漂亮的SQL语句(被格式化的SQL语句)

    在Java编程中,调试SQL语句是开发过程中的常见任务,尤其当面对复杂且冗长的查询时。为了提高效率并使SQL语句更易于理解和分析,格式化SQL语句显得尤为重要。标题提及的"Java打印漂亮的SQL语句(被格式化的SQL语句)...

    hibernate显示不带?的完整sql

    在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数值。通常,Hibernate默认输出的SQL语句会用问号(?)作为占位符,这在理解查询逻辑时可能会带来不便。本文将详细介绍...

    hibernate将本地SQL查询结果封装成对象

    首先,本地SQL查询(Native SQL)是指直接在Hibernate中使用原生的SQL语句进行查询,而不是使用HQL(Hibernate Query Language)。这允许开发者充分利用SQL的功能,比如进行复杂的统计计算或者处理特定数据库的特性...

    使用p6spy完整显示hibernate的SQL语句

    在开发和优化过程中,清晰地查看和理解执行的SQL语句至关重要。`p6spy`是一个非常实用的开源工具,它能够帮助我们监控和记录应用通过JDBC执行的所有SQL语句。这篇博客“使用p6spy完整显示hibernate的SQL语句”可能...

    spring_Framework+经典SQL语句大全+Hibernate中文API

    4. 示例代码或项目:可能包含了一些使用Spring和Hibernate的示例程序,展示如何在实际开发中整合这两个框架,以及如何编写和执行SQL语句。 学习并掌握Spring Framework、经典SQL语句和Hibernate,对于Java开发人员...

    java操作mysql数据库,不写sql语句版

    在Java编程中,与MySQL数据库交互通常涉及到使用SQL语句来执行CRUD(创建、读取、更新、删除)操作。然而,为了提高代码的可维护性和安全性,开发者可以选择使用ORM(对象关系映射)框架,如Hibernate或MyBatis,...

    计算机软件-商业源码-实例114-在程序中执行SQL语句.zip

    "实例114-在程序中执行SQL语句.zip"这个压缩包很可能是包含了一个或多个示例代码,展示了如何在不同的编程环境中与数据库进行交互。下面我们将深入探讨在程序中执行SQL语句的相关知识点。 首先,SQL(Structured ...

    若依微服务数据库执行sql

    本篇将深入探讨如何在若依微服务中执行SQL语句,以及与之相关的数据库管理和微服务设计原则。 首先,SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,包括数据查询、更新、插入和删除等...

    Struts 1.1、Hibernate 3.0和SQL Server 2005数据库驱动包

    SQL Server 2005的JDBC驱动程序(sqljdbc.jar)允许Java应用程序连接到SQL Server数据库,执行SQL语句,以及管理数据库连接。 在提供的压缩包中,"jakarta-struts-1%5B1%5D.1-src.rar"包含了Struts 1.1的源代码,这...

    C#不写SQL语句的数据库操作

    本主题将探讨如何在C#中进行不写SQL语句的数据库操作,实现对数据的增删改查功能。 首先,我们可以利用ORM(Object-Relational Mapping)框架来避免直接编写SQL。ORM框架允许开发者用面向对象的方式来操作数据库,...

    Hibernate使用xdoclet生成映射文件和sql语句

    XDoclet是早期的一个工具,用于自动生成Hibernate的映射文件(.hbm.xml)和SQL语句,这样开发者无需手动编写这些文件,提高了开发效率。这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了...

Global site tag (gtag.js) - Google Analytics