以下是Demo测试Hibernate 原生SQL查询:

  1. import java.util.Iterator;
  2. import java.util.List;
  3. import java.util.Map;
  4.  
  5. import org.hibernate.Hibernate;
  6. import org.hibernate.SQLQuery;
  7. import org.hibernate.Session;
  8. import org.hibernate.Transaction;
  9. import org.hibernate.transform.Transformers;
  10.  
  11. import com.hibernate.bean.SqlQueryBean;
  12. import com.hibernate.bean.User;
  13. import com.hibernate.util.HibernateUtil;
  14.  
  15. public class SqlQueryTest {
  16.  
  17. public static void main (String [] args){
  18.  
  19. sqlQueryAddScalar();
  20.  
  21. }
  22.  
  23. static void sqlQueryAddEntity(){
  24.  
  25. //获取Hibernate Session对象
  26.  
  27. Session session = HibernateUtil.getSession();
  28.  
  29. //开始事务
  30.  
  31. Transaction tx = session.beginTransaction();
  32.  
  33. //编写SQL语句
  34.  
  35. String sqlString = "select * from user";
  36.  
  37. //以SQL语句创建SQLQuery对象
  38.  
  39. List l = session.createSQLQuery(sqlString)
  40.  
  41. //将查询ss实体关联的User类
  42.  
  43. .addEntity("ss",User.class)
  44.  
  45. //返回全部的记录集
  46.  
  47. .list();
  48.  
  49. //遍历结果集
  50.  
  51. Iterator it = l.iterator();
  52.  
  53. while (it.hasNext()){
  54.  
  55. //因为将查询结果与Student类关联,因此返回的是Student集合
  56.  
  57. User s = (User)it.next();
  58.  
  59. String a = s.getName();
  60.  
  61. System.out.println(a);
  62.  
  63. }
  64.  
  65. //提交事务
  66.  
  67. tx.commit();
  68.  
  69. session.close();
  70.  
  71. }
  72.  
  73. static void sqlQueryAddScalar(){
  74.  
  75. //返回Object[]的遍历
  76.  
  77. Session session=HibernateUtil.getSession();
  78.  
  79. Transaction transaction=session.beginTransaction();
  80.  
  81. String sql="select * from user";
  82.  
  83. SQLQuery s=(SQLQuery) session.createSQLQuery(sql); //.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
  84.  
  85. s.addScalar("id",Hibernate.INTEGER); //列名, 数据类型
  86. s.addScalar("name",Hibernate.STRING);
  87.  
  88. List list=s.list();
  89.  
  90. Object[] objects=(Object[])list.get(0);
  91.  
  92. System.out.println(objects[0]);
  93. System.out.println(objects[1]);
  94.  
  95. //用MAP
  96.  
  97. SQLQuery ss=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
  98.  
  99. ss.addScalar("id",Hibernate.INTEGER);
  100. ss.addScalar("name",Hibernate.STRING);
  101.  
  102. List list2=ss.list();
  103.  
  104. Map map = (Map) list2.get(0);
  105.  
  106. System.out.println(map.get("name"));
  107. System.out.println(map.get("id"));
  108.  
  109. //用LIST
  110.  
  111. SQLQuery s3=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.TO_LIST);
  112.  
  113. s3.addScalar("id",Hibernate.INTEGER);
  114. s3.addScalar("name",Hibernate.STRING);
  115.  
  116. List list3=s3.list();
  117.  
  118. List list4=(List)list3.get(0);
  119.  
  120. System.out.println(list4.get(0));
  121. System.out.println(list4.get(1));
  122.  
  123. //用自定义的bean
  124.  
  125. SQLQuery e=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(SqlQueryBean.class));
  126.  
  127. e.addScalar("id",Hibernate.INTEGER);
  128. e.addScalar("name",Hibernate.STRING);
  129.  
  130. List r=e.list();
  131.  
  132. SqlQueryBean sqb=(SqlQueryBean)r.get(0);
  133.  
  134. System.out.println(sqb.getId());
  135. System.out.println(sqb.getName());
  136. }
  137.  
  138. }

分享

hibernate使用原生SQL查询的更多相关文章

  1. hibernate使用原生SQL查询返回结果集的处理

    今天没事的时候,看到公司框架里有一个用原生SQL写的函数,说实在以前自己也干过这事,但好久都没有用,都忘得差不多了,现在基本都是用的hql语句来查询结果.hibernate中使用createSQLQu ...

  2. Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1

    第一篇:官方文档的处理方法,摘自官方 在迁移原先用JDBC/SQL实现的系统,难免需要采用hibernat native sql支持. 1.使用SQLQuery hibernate对原生SQL查询执行 ...

  3. hibernate 5原生sql查询测试学习代码

    基本查询 import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org. ...

  4. Hibernate 的原生 SQL 查询

    Hibernate除了支持HQL查询外,还支持原生SQL查询.         对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取 ...

  5. Hibernate SQLQuery 原生SQL 查询及返回结果集处理-2

    1. 返回List, .setResultTransformer(      Transformers.ALIAS_TO_ENTITY_MAP);将结果转为Map,存放到list中,即list中为若干 ...

  6. Hibernate原生SQL查询多表关联,SQL语句要注意的问题

    Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Ques ...

  7. 13.hibernate的native sql查询(转自xiaoluo501395377)

    hibernate的native sql查询   在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hi ...

  8. hibernate的native sql查询

    在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQ ...

  9. Hibernate原生SQL查询

    最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...

随机推荐

  1. C函数前向声明省略参数

    这样的不带参数的函数声明,在c中是合法的,表示任意参数:当然我们自己写代码最好不要这样写了,但是读老代码还是会遇到: #include <stdio.h> void fun(); int ...

  2. linux中字符串转换函数 simple_strtoul【转】

    转自:http://blog.csdn.net/tommy_wxie/article/details/7480087 Linux内核中提供的一些字符串转换函数: lib/vsprintf.c [htm ...

  3. C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. java的equal和==问题

    看一本比较简略的java教程,在看到对象的时候,书上直接给我来一句: 刚看下觉得没什么问题,很有道理的一个东东嘛,但是出于习惯还是打了几行代码测试了一下,代码如下: class Person { pr ...

  5. git学习笔记二-branch分支

    1.刚创建好的空仓库的分支是空的,即使是master分支也是不存在的.master分支是不能通过git branch 来创建的,只有在完成第一次提交才会自动创建,有git自动完成master分子的创建 ...

  6. LVS负载均衡DR模式

    什么是集群? 一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器.简而言之,一堆机器协同工作就是集群.集群的基本特点:高性能.高并发.高吞 ...

  7. java之基本数据类型与引用数据类型

    基本数据类型 需要注意的是字符是基本数据类型,但是字符串不是基本数据类型. 引用数据类型 类.接口类型.数组类型.枚举类型.注解类型. (上面说的字符串String属于引用数据类型中“类”的范畴) 两 ...

  8. linux命令(11):df命令

    1.查看磁盘空间和当前的磁盘数:df –lh或者df –i 2.显示指定类型磁盘:df -t ext4 3.列出各文件系统的i节点使用情况:df  -ia 4.列出文件系统的类型:df -T

  9. hdu 3371(kruskal)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  10. 【hdoj_2079】选课时间(母函数)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2079 此题采用母函数的知识求解,套用母函数模板即可: http://blog.csdn.net/ten_s ...