作为程序员最痛苦的莫过于修改别人的代码,尤其是架构不合理更是蛋疼,有谁家的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 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...
hibernate中使用sql 而不是hql语句
hibernate.use_sql_comments 参数用于如果开启,Hibernate 将在 SQL 中生成有助于调试的注释信息。其取值为 true 或 false。 14. hibernate.jdbc.fetch_size hibernate.jdbc.fetch_size 参数用于指定 JDBC 抓取...
模仿Hibernate生产SQL语句,使用Java反射
虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似 select * from xxx where value=? 但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6SPY就可以完成这个任务
spring_Framework+经典SQL语句大全+Hibernate中文API
hibernate将本地SQL查询结果封装成对象。如进行复杂的统计等本地sql语句查询后,直接放到对象里了,而不会再使用Object进行强转
Hibernate在Myeclipse下SQL语句演示,包含有HQL and Criteria语句的编写测试。
上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。
NULL 博文链接:https://javatozhang.iteye.com/blog/2045875
主要介绍了在Java的Hibernate框架中使用SQL语句的方法,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
NULL 博文链接:https://28680360-qq-com.iteye.com/blog/1673095
基于sql语句的分页,效率更高,此jar包包含常用分页格式 使用方法在jboss5的博客中
hibernate 对于数据库的映射语句 sqlserver以及mysql映射语句都有 调试过能用 尽情下载吧
Hibernate 显示完整sql的配置工具,配置好后在Console会输出不带?的sql语句,方便调试。
该方式是原生SQL查询的一种方式,需要个人自己书写SQL语句进行操作,用法比较灵活多变,适合比较复杂的SQL查询.该压缩包是本人对该查询方式的一种总结练习
我们可以在配置文件中使用元素来设置SQL方言,例如: <property name="dialect">org.hibernate.dialect.SQLServerDialect 在上面的配置中,我们使用了org.hibernate.dialect.SQLServerDialect SQL方言来生成适合...