`
小咩扛枪
  • 浏览: 27834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate中使用sql语句总结

 
阅读更多
作为程序员最痛苦的莫过于修改别人的代码,尤其是架构不合理更是蛋疼,有谁家的hibrenate映射文件不维护关联关系的,关键是知道问题所在还不让动;所以遇到多表查询的时候不得不选择在hibernate中使用原生sql语句。

以下是自己开发过程中使用到的方法:

一、当单表查询时会遇到一些关键字(如:distinct)hibernate不支持,这时候使用原生sql语句, 直接上代码:

String sql="select distinct t1.id,t1.name from user t1";

List list=new ArrayList();
			Session session=this.getSessionFactory().openSession();
				//List list=this.getHibernateTemplate().find(hql);
				Transaction tx=session.beginTransaction();
				SQLQuery s=session.createSQLQuery(sql);
				s.addScalar("id", Hibernate.STRING);
				s.addScalar("name", Hibernate.STRING);
//在执行查询前必须执行addEntity()或是addScalar(),否则会报错。
//这里的addScalar方法是用于指定字段的数据类型,第一个参数是字段名称,第二个参数是数据类型
				List list1=s.list();
				
				tx.commit();
				session.close();
//遍历结果集
				if(list1!=null && list1.size()>0){
					for(int i=0;i<list1.size();i++){
						Object[] obj=(Object[])list1.get(i);
						User te=new TExpInBook();
						
						;
						te.setId(id);
						te.setName(obj[1].toString());
						list.add(te);
						
					}
					
				}
			return list;


二、当然最重要的还是多表查询,因为没有维护javabean的关联关系,所以在hibernate中不能使用left join、reght join等这些关键字
hibernate中使用原生sql进行多表查询跟上边的代码类似,但是不指定所需要查询的字段过不去(渣渣一枚,没有求知欲望,不知道为什么也没去找找原因),但是结果集字段好多按照上面的写法代码工作量又大,可读性又差。这时候有一个addJoin()方法可以挺方便的解决多表查询的问题,但是前提是javabean需要维护关联关系,这里给两个大神的博客地址,解释的清晰明白,不像我这么懒的朋友去看看吧!
http://langgufu.iteye.com/blog/1565397 hibernate
http://useky.blog.sohu.com/219680936.html hibernate
http://www.360doc.com/content/14/0530/14/16002580_382274995.shtml

分享到:
评论

相关推荐

    hibernate执行原生sql语句

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

    Hibernate中Sql语句

    ### Hibernate中使用SQL而非HQL语句的知识点详解 在Java开发中,Hibernate作为一个非常流行的ORM框架,提供了多种查询方式,其中就包括了HQL(Hibernate Query Language)和原生SQL查询。本文将针对给定代码片段中...

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

    通过上述步骤,我们就可以在Hibernate项目中方便地使用配置文件中的SQL语句了。这种方式提高了代码的可读性和可维护性,特别是在处理复杂SQL时,避免了硬编码SQL到Java代码中。同时,它还支持参数化查询,能够有效...

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

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

    Hibernate生产SQL语句

    总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...

    hibernate实现动态SQL查询

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

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

    在开发和调试基于Hibernate的Java应用时,有时我们需要获取到SQL语句的完整形式,而不仅仅是Hibernate默认输出的参数化形式。在这种情况下,P6Spy是一个非常有用的工具。P6Spy是一个开源的JDBC代理库,它允许我们...

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

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

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

    这篇博客“使用p6spy完整显示hibernate的SQL语句”可能详细解释了如何配置和使用p6spy来跟踪Hibernate生成并执行的SQL。 首先,`p6spy`是一个Java数据库代理库,它可以拦截并记录所有通过JDBC发送到数据库的SQL语句...

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

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

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

    - 注解配置:在实体类中使用XDoclet支持的Hibernate注解,如`@Entity`定义实体,`@Table`指定数据库表名,`@Column`定义字段与列的对应关系等。 - 执行生成:运行XDoclet,它会扫描源代码中的注解,生成相应的.hbm...

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

    总结来说,C#中不写SQL语句的数据库操作主要依赖于ORM框架,如Entity Framework、NHibernate和Dapper,它们提供了面向对象的接口,简化了数据库交互。此外,存储过程和ADO.NET的DataSet/DataTable也是可行的解决方案...

    hibernate显示不带?的完整sql

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

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

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

    hibernate 执行原生sql的几种方式

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

    Java 使用注解拼接SQL语句

    在"Java使用注解拼接SQL语句"的场景中,我们可能会定义一个如`@Select`、`@Insert`、`@Update`或`@Delete`的注解,用于标注SQL查询相关的代码。例如,我们可以定义一个`@Query`注解,其中包含SQL语句的模板或者参数...

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

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

    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的源代码,这...

    Hibernate在Myeclipse下SQL语句演示

    在Myeclipse这样的集成开发环境中,使用Hibernate可以方便地进行SQL语句的编写和调试。本演示将重点讲解如何在Myeclipse下利用Hibernate执行HQL(Hibernate Query Language)和Criteria查询。 ### Hibernate核心...

Global site tag (gtag.js) - Google Analytics