hibernate使用原生SQL查询
以下是Demo测试Hibernate 原生SQL查询:
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import org.hibernate.Hibernate;
- import org.hibernate.SQLQuery;
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import org.hibernate.transform.Transformers;
- import com.hibernate.bean.SqlQueryBean;
- import com.hibernate.bean.User;
- import com.hibernate.util.HibernateUtil;
- public class SqlQueryTest {
- public static void main (String [] args){
- sqlQueryAddScalar();
- }
- static void sqlQueryAddEntity(){
- //获取Hibernate Session对象
- Session session = HibernateUtil.getSession();
- //开始事务
- Transaction tx = session.beginTransaction();
- //编写SQL语句
- String sqlString = "select * from user";
- //以SQL语句创建SQLQuery对象
- List l = session.createSQLQuery(sqlString)
- //将查询ss实体关联的User类
- .addEntity("ss",User.class)
- //返回全部的记录集
- .list();
- //遍历结果集
- Iterator it = l.iterator();
- while (it.hasNext()){
- //因为将查询结果与Student类关联,因此返回的是Student集合
- User s = (User)it.next();
- String a = s.getName();
- System.out.println(a);
- }
- //提交事务
- tx.commit();
- session.close();
- }
- static void sqlQueryAddScalar(){
- //返回Object[]的遍历
- Session session=HibernateUtil.getSession();
- Transaction transaction=session.beginTransaction();
- String sql="select * from user";
- SQLQuery s=(SQLQuery) session.createSQLQuery(sql); //.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
- s.addScalar("id",Hibernate.INTEGER); //列名, 数据类型
- s.addScalar("name",Hibernate.STRING);
- List list=s.list();
- Object[] objects=(Object[])list.get(0);
- System.out.println(objects[0]);
- System.out.println(objects[1]);
- //用MAP
- SQLQuery ss=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- ss.addScalar("id",Hibernate.INTEGER);
- ss.addScalar("name",Hibernate.STRING);
- List list2=ss.list();
- Map map = (Map) list2.get(0);
- System.out.println(map.get("name"));
- System.out.println(map.get("id"));
- //用LIST
- SQLQuery s3=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.TO_LIST);
- s3.addScalar("id",Hibernate.INTEGER);
- s3.addScalar("name",Hibernate.STRING);
- List list3=s3.list();
- List list4=(List)list3.get(0);
- System.out.println(list4.get(0));
- System.out.println(list4.get(1));
- //用自定义的bean
- SQLQuery e=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(SqlQueryBean.class));
- e.addScalar("id",Hibernate.INTEGER);
- e.addScalar("name",Hibernate.STRING);
- List r=e.list();
- SqlQueryBean sqb=(SqlQueryBean)r.get(0);
- System.out.println(sqb.getId());
- System.out.println(sqb.getName());
- }
- }
分享
hibernate使用原生SQL查询的更多相关文章
- hibernate使用原生SQL查询返回结果集的处理
今天没事的时候,看到公司框架里有一个用原生SQL写的函数,说实在以前自己也干过这事,但好久都没有用,都忘得差不多了,现在基本都是用的hql语句来查询结果.hibernate中使用createSQLQu ...
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1
第一篇:官方文档的处理方法,摘自官方 在迁移原先用JDBC/SQL实现的系统,难免需要采用hibernat native sql支持. 1.使用SQLQuery hibernate对原生SQL查询执行 ...
- hibernate 5原生sql查询测试学习代码
基本查询 import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org. ...
- Hibernate 的原生 SQL 查询
Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取 ...
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-2
1. 返回List, .setResultTransformer( Transformers.ALIAS_TO_ENTITY_MAP);将结果转为Map,存放到list中,即list中为若干 ...
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Ques ...
- 13.hibernate的native sql查询(转自xiaoluo501395377)
hibernate的native sql查询 在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hi ...
- hibernate的native sql查询
在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQ ...
- Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...
随机推荐
- C函数前向声明省略参数
这样的不带参数的函数声明,在c中是合法的,表示任意参数:当然我们自己写代码最好不要这样写了,但是读老代码还是会遇到: #include <stdio.h> void fun(); int ...
- linux中字符串转换函数 simple_strtoul【转】
转自:http://blog.csdn.net/tommy_wxie/article/details/7480087 Linux内核中提供的一些字符串转换函数: lib/vsprintf.c [htm ...
- C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- java的equal和==问题
看一本比较简略的java教程,在看到对象的时候,书上直接给我来一句: 刚看下觉得没什么问题,很有道理的一个东东嘛,但是出于习惯还是打了几行代码测试了一下,代码如下: class Person { pr ...
- git学习笔记二-branch分支
1.刚创建好的空仓库的分支是空的,即使是master分支也是不存在的.master分支是不能通过git branch 来创建的,只有在完成第一次提交才会自动创建,有git自动完成master分子的创建 ...
- LVS负载均衡DR模式
什么是集群? 一组相互独立的计算机,利用高速通信网络组成的一个计算机系统,对于客户机来说像是一个单一服务器,实际上是一组服务器.简而言之,一堆机器协同工作就是集群.集群的基本特点:高性能.高并发.高吞 ...
- java之基本数据类型与引用数据类型
基本数据类型 需要注意的是字符是基本数据类型,但是字符串不是基本数据类型. 引用数据类型 类.接口类型.数组类型.枚举类型.注解类型. (上面说的字符串String属于引用数据类型中“类”的范畴) 两 ...
- linux命令(11):df命令
1.查看磁盘空间和当前的磁盘数:df –lh或者df –i 2.显示指定类型磁盘:df -t ext4 3.列出各文件系统的i节点使用情况:df -ia 4.列出文件系统的类型:df -T
- hdu 3371(kruskal)
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 【hdoj_2079】选课时间(母函数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2079 此题采用母函数的知识求解,套用母函数模板即可: http://blog.csdn.net/ten_s ...