`

转:hibernate 执行原生态sql语句

    博客分类:
阅读更多

转载链接:http://747017186.iteye.com/blog/2038004

 

hibernate执行原生态的sql语句,对于增删改hibernate封装的很好,但是对于查询自身比较喜欢原生态的sql语句,但是如果用 hql会很麻烦,可能涉及到一个表对应一个类,但是如果我查询的是一个统计集合,比方说select count(*)from (select * from table);这样就会很麻烦。涉及到子查询。

还在hibernate给我们封装和很多好的方法,现在大家看看:

public List<CalculationTitle> getAllTitleCalculation(String testID,String paperID) {

// TODO Auto-generated method stub

Session s=null;//大家注意CalculationTitle是虚拟的,与数据库没有表对应,只是用来装数据的

List<CalculationTitle> titles=new ArrayList<CalculationTitle>();

try {

s=getSession();

SQLQuery query = s.createSQLQuery("SELECT t.res_sttype x1,MAX(t.RES_GOLE) x2,MIN(t.RES_GOLE) x3,AVG(t.RES_GOLE) x4 FROM (SELECT * FROM eps_reslib_7 WHERE RES_TESTID="+testID+" and RES_PAPERID="+paperID+") as t GROUP BY t.res_sttype");//这个sql语句很复杂

query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);//设置查询的结果用map保存起来。map的key值是查询字段的别名(比如x1,x2,x3,x4;如果没有别名那就是max(t.res_gogle),要查询什么就是什么),value的值是查出来的值。 

 

List<Map> list = query.list();

for (Map map : list)

{

Object o=map.get("x1");//最后解析这个装有map的list集合,即可。很简单,不必在建立烦人的实体类了。

System.out.println(o);

}

} catch (Exception e) {

e.printStackTrace();

}

return titles;

}

分享到:
评论

相关推荐

    关于hibernate 的createQuery和createSqlQuery 的区别

    createSqlQuery 方法是 Hibernate 提供的一种查询机制,用于执行原生态的 SQL 语句。与 createQuery 方法不同的是,createSqlQuery 方法可以执行查询、修改和添加操作。 使用 createSqlQuery 方法可以执行以下操作...

    hibernate与ibatis比较的11大优势

    4. **原生SQL的支持**:尽管如此,Hibernate并没有完全放弃对原生SQL的支持,开发者仍然可以在必要时直接编写并执行原生SQL语句。而在iBatis中,所有的查询都必须以XML文件的形式定义,这在一定程度上降低了代码的...

    hibernate 的好处

    - **支持原生 SQL**:虽然 Hibernate 鼓励使用 HQL,但它同样支持使用原生 SQL,这对于需要执行复杂查询的情况非常有用。 - **XML 文件配置**:Hibernate 可以通过 XML 文件来配置映射关系,这使得整个系统的配置...

    《Mybatis应用技术》复习资料.doc

    - **灵活性**: MyBatis 允许开发者直接编写原生态 SQL,这使得其在面对需求频繁变更的情况下能够快速适应,同时也提供了更高的性能优化空间。 - **数据库无关性**: 由于 MyBatis 需要手动编写 SQL,因此在需要支持...

    JPA和Hibernate的关系

    3. **查询语言**:JPA引入了一种名为JPQL(Java Persistence Query Language)的查询语言,这是一种面向对象的查询语言,可以用来执行各种查询操作,而不必直接编写SQL语句。这有助于降低应用与数据库之间的耦合度。...

    MyBatis面试题 37道.pdf

    程序员直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高。 MyBatis 的优点包括: * 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响 * SQL 写在 XML 里,解除 SQL 与程序...

    后端开发框架HibernateORM框架将Java对象映射到数据库表

    - **自动SQL生成**:Hibernate能够自动生成SQL语句,大大减少了手写SQL的需求。 - **透明性**:开发者可以通过简单的注解或XML配置文件来指定对象与数据库表之间的映射关系。 - **缓存机制**:Hibernate提供了内置的...

    mybatis面试题整理详细版

    * Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发。 * Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用 ...

    1000道Java工程师面试题.pdf

    - **灵活性高**:MyBatis允许开发者编写原生态SQL,从而提供更高的灵活性。 - **易于上手**:对于简单的操作,只需配置少量XML即可实现数据访问。 - **性能优秀**:相比Hibernate等全ORM框架,MyBatis提供了更细粒度...

    MyBatis 常见面试题总结.docx

    程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。 MyBatis 的优点: 1. 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 sql 与程序代码...

    mybatis-超详细文档-文档

    - **SqlSession**:执行 SQL 语句的主要接口,提供了一系列的方法来映射 SQL 语句。 **3. MyBatis 的优势** - **减少 JDBC 编码量**:MyBatis 封装了大量的 JDBC 代码,简化了数据库操作。 - **SQL 与 Java 代码...

    Hibernate5用户手册中文版

    - 还涉及如何配置数据库方言(Database Dialect),以便Hibernate能够生成与特定数据库兼容的SQL语句。 6. **事务与并发控制**: - 介绍了物理事务的管理方式和Hibernate的事务API。 - 讨论了不同事务模式(如...

    mybatis基础及项目实战

    - **灵活性**:允许开发者编写原生态SQL并运用强大的动态SQL语句。 - **简洁性**:通过XML映射文件或注解实现声明式编程。 - **高效性**:通过缓存机制提高性能。 - **易于集成**:可以轻松地与Spring等其他Java...

    Java程序员面试,MyBatise常见面试27道必问题

    2. MyBatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发。 3. Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用 ...

    传智播客SpringMvc+Mybatis由浅入深视频教程及课程源码资料

    - **强大的SQL语句控制**:允许开发者编写原生态的SQL语句,便于优化。 - **动态SQL**:支持if、choose、when、otherwise等元素,可以根据条件动态生成不同的SQL语句。 - **缓存机制**:提供了二级缓存机制,可以在...

    MyBatis的27道面试题

    MyBatis的编写原生态SQL特性赋予了开发者高度的灵活性,可以精确控制SQL的执行,适用于需求变化频繁的互联网项目。 MyBatis的优点主要体现在基于SQL语句编程带来的灵活性,消除了与数据库的耦合,便于统一管理SQL...

    JAVA全面知识

    Hibernate的优势在于它可以自动处理SQL语句,减少了手动编写SQL的工作量,并支持对象级的数据操作。 2. **Oracle教程**:Oracle是一种广泛应用的关系型数据库管理系统,游标.doc可能涵盖了如何在Oracle中使用游标...

    mybatis入门

    4. **灵活性**:MyBatis允许开发者编写原生态SQL,并且能够灵活地控制SQL语句,适用于复杂的查询需求。 #### 三、MyBatis基本配置 1. **配置文件结构**: - `mybatis-config.xml`:MyBatis的核心配置文件,包括...

    1000道 互联网Java工程师面试题 485页_PDF密码解除.pdf

    - **灵活性高:**由于MyBatis支持编写原生态SQL,因此可以执行复杂的查询逻辑。 - **易于上手和掌握:**相对于其他ORM框架,MyBatis的学习曲线较为平滑。 - **支持多种数据库:**MyBatis支持多种数据库,如MySQL、...

Global site tag (gtag.js) - Google Analytics