基本查询

  1. import java.util.List;
  2. import org.hibernate.SQLQuery;
  3. import org.hibernate.Session;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.query.NativeQuery;
  6. import org.hibernate.query.Query;
  7. import org.junit.jupiter.api.Test;
  8. import com.fei.domain.Customer;
  9. import com.fei.utils.HibernateUtils;
  10. /**
  11. * 测试Hibernate中原生sql查询
  12. */
  13. public class Demo {
  14. @Test
  15. // 基本查询
  16. public void fun1() {
  17. // 1获得session
  18. Session session = HibernateUtils.openSession();
  19. // 2开启事务
  20. Transaction tx = session.beginTransaction();
  21. // 3执行操作
  22. // =====================================
  23. // 1)书写原生sql语句
  24. String sql = "select * from cst_customer";
  25. // 2)创建原生sql查询对象(面向接口编程)
  26. Query<Customer> query = session.createNativeQuery(sql, Customer.class);
  27. // 3)获得结果
  28. List<Customer> list = query.list();
  29. System.out.println(list);
  30. // =====================================
  31. // 4提交事务,关闭资源
  32. tx.commit();
  33. session.close();
  34. }
  35. }

条件查询

  1. @Test
  2. // 条件查询
  3. public void fun2() {
  4. // 1获得session
  5. Session session = HibernateUtils.openSession();
  6. // 2开启事务
  7. Transaction tx = session.beginTransaction();
  8. // 3执行操作
  9. // =====================================
  10. // 1)书写原生sql语句
  11. String sql = "select * from cst_customer where cust_id = :id";
  12. // 2)创建原生sql查询对象
  13. Query<Customer> query = session.createNativeQuery(sql, Customer.class).setParameter("id", 2l);
  14. // 3)获得结果
  15. List<Customer> list = query.list();
  16. System.out.println(list);
  17. // =====================================
  18. // 4提交事务,关闭资源
  19. tx.commit();
  20. session.close();
  21. }

注意:hibernate5在使用原生的sql查询时,占位符要使用:id的形式,使用?的形式会报异常。至少我测试的时候是这样(((φ(◎ロ◎;)φ)))

分页查询

  1. @Test
  2. // 分页查询
  3. public void fun3() {
  4. // 1获得session
  5. Session session = HibernateUtils.openSession();
  6. // 2开启事务
  7. Transaction tx = session.beginTransaction();
  8. // 3执行操作
  9. // =====================================
  10. // 1)书写原生sql语句
  11. String sql = "select * from cst_customer limit :beginPos, :maxResult";
  12. // 2)创建原生sql查询对象
  13. Query<Customer> query = session.createNativeQuery(sql, Customer.class);
  14. query.setParameter("beginPos", 0);
  15. query.setParameter("maxResult", 2);
  16. // 3)获得结果
  17. List<Customer> list = query.list();
  18. System.out.println(list);
  19. // =====================================
  20. // 4提交事务,关闭资源
  21. tx.commit();
  22. session.close();
  23. }

查询总记录数

  1. @Test
  2. // 查询总记录数
  3. public void fun4() {
  4. // 1获得session
  5. Session session = HibernateUtils.openSession();
  6. // 2开启事务
  7. Transaction tx = session.beginTransaction();
  8. // 3执行操作
  9. // =====================================
  10. // 1)书写原生sql语句
  11. String sql = "select count(*) from cst_customer";
  12. // 2)创建原生sql查询对象
  13. Query<?> query = session.createNativeQuery(sql);
  14. // 3)获得结果
  15. List<?> list = query.list();
  16. System.out.println(list.get(0));
  17. // 这种方式也是可以的,当知道结果只有一条时
  18. // Object result = query.uniqueResult();
  19. // =====================================
  20. // 4提交事务,关闭资源
  21. tx.commit();
  22. session.close();
  23. }

封装的HibernateUtils工具类

  1. package com.fei.utils;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. public class HibernateUtils {
  6. private static SessionFactory sf;
  7. // 为保证一个应用只有一个SessionFactory对象
  8. static {
  9. // 1.创建并读取指定配置文件,空参默认加载src路径下的名为hibernate.cfg.xml
  10. Configuration conf = new Configuration().configure();
  11. // 2.根据配置信息,创建SessionFactory对象
  12. sf = conf.buildSessionFactory();
  13. }
  14. // 获得全新session
  15. public static Session openSession() {
  16. // 3.获得新的session对象并返回
  17. return sf.openSession();
  18. }
  19. // 获得与线程绑定的session
  20. public static Session getCurrentSession() {
  21. // 3.获得与线程绑定的session对象并返回
  22. return sf.getCurrentSession();
  23. }
  24. }

hibernate 5原生sql查询测试学习代码的更多相关文章

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

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

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

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

  3. hibernate使用原生SQL查询

    以下是Demo测试Hibernate 原生SQL查询: import java.util.Iterator; import java.util.List; import java.util.Map; ...

  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查询,结果集全为1的问题解决

    问题如下: String sqlTest ="select summary,summaryno from F_Summary"; List<Map<Object, Ob ...

随机推荐

  1. CF286E Ladies' Shop FFT

    题目链接 读完题后,我们发现如下性质: 在合法且和不超过 $m$ 的情况下,如果 $a_{i}$ 出现,则 $a_{i}$ 的倍数也必出现. 所以如果合法,只要对所有数两两结合一次就能得到所有 $a_ ...

  2. 20180708-Java修饰符

    public class className{ //...} private boolean myFlag;static final double weeks = 9.5;protected stat ...

  3. Magic Line

    Magic Line 玄学过题系列,随机选在所有点左下方的点,然后对其他点斜率排序,取斜率在中间两个点之间 比赛时,左下方点不够随机==,导致没卡过去 #include<bits/stdc++. ...

  4. 银联高校极客挑战赛 初赛 第一场 B

    自学图论的码队弟弟 试图写非递归求解,然后TLE了一下午==,全程找不到bug,换成递归,一发AC 判断环写得很丑== #include<bits/stdc++.h> using name ...

  5. codeforces 617 E. XOR and Favorite Number(莫队算法)

    题目链接:http://codeforces.com/problemset/problem/617/E 题目: 给你a1 a2 a3 ··· an 个数,m次询问:在[L, R] 里面又多少中 [l, ...

  6. 测开之路七十三:用kafka实现消息队列之环境搭建

    一:装java环境,确保java能正确调用 kafka下载地址:http://kafka.apache.org/downloads 下载并解压kafka: 新建两个文件夹,用于存放zookeeper和 ...

  7. 非典型T_SQL的总结

      ------over的两种常用的用法--- --第一种分组 当然要注意了,这里的分组并不是实际的分组,而是根据你的业务需求而坐的临时分组   select roomguid,Room, avg(t ...

  8. 网络流强化-POJ2516

    k种货物分开求解最小费用最大流,主要减少了寻找最短路的时间. #include<queue> #include<cstdio> #include<cstring> ...

  9. 模拟赛毒瘤状压DP题:Kronican

    Kronican 内存限制:32 MiB 时间限制:2000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: cqbzgm 题目描述 Mislav有N个无限体积的杯子,每一个杯子中都 ...

  10. Mac003--Maven安装与环境变量配置

    Mac--Maven安装 一.应用brew安装maven及安装位置 打开终端,输入命令:brew install maven 参考博客:https://www.jianshu.com/p/230e0b ...