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接口进行的,通过执行 ...
随机推荐
- 解决linux下终端无法输入的假死问题
有时在linux下shell终端中,会突然出现终端应用卡死,无法接受键盘输入, 但是其它分屏, 系统都是正常的.这本来是一个终端的很老的功能, 叫软件流控制(XON/XOFF flow control ...
- opengl基础学习专题 (一 )编程环境搭建
题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下 ...
- 海量文件查重SimHash和Minhash
SimHash 事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离.海明距离或者余弦角度等等.两两比较固然能很好地适应,但这种方法的一个最大的缺点 ...
- leetcode 之Valid Palindrome(26)
现在开始进入字符串系列. 判断回文串的.首尾各定义一个指针,然后相比较.难点在于如何提出非字母数字的字符. bool isValidPalind(string s) { //转为小写,注意这个函数的用 ...
- 多路复用I/O模型epoll() 模型 代码实现
epoll模型 int epoll_create(int maxevent) //创建一个epoll的句柄 然后maxevent表示监听的数目的大小int epoll_ctl(int epollfd, ...
- Mybatis学习—XML映射文件
总结自 Mybatis官方中文文档 Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同 ...
- LeetCode解题报告—— Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...
- 《java并发编程实战》读书笔记12--原子变量,非阻塞算法,CAS
第15章 原子变量与非阻塞同步机制 近年来,在并发算法领域的大多数研究都侧重于非阻塞算法,这种算法用底层的原子机器指令(例如比较并交换指令)代替锁老确保数据在并发访问中的一致性. 15.1 锁的劣势 ...
- 聊聊五大IO模型
IO模型介绍 IO模型不是用来开启并发效果的,而是用来接收并发效果的. 比较了五种IO Model: * blocking IO 阻塞IO * nonblocking ...