基本查询

import java.util.List;

import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import org.junit.jupiter.api.Test; import com.fei.domain.Customer;
import com.fei.utils.HibernateUtils; /**
* 测试Hibernate中原生sql查询
*/
public class Demo {
@Test
// 基本查询
public void fun1() {
// 1获得session
Session session = HibernateUtils.openSession();
// 2开启事务
Transaction tx = session.beginTransaction(); // 3执行操作
// =====================================
// 1)书写原生sql语句
String sql = "select * from cst_customer";
// 2)创建原生sql查询对象(面向接口编程)
Query<Customer> query = session.createNativeQuery(sql, Customer.class); // 3)获得结果
List<Customer> list = query.list();
System.out.println(list);
// ===================================== // 4提交事务,关闭资源
tx.commit();
session.close();
}
}

条件查询

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

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

分页查询

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

查询总记录数

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

封装的HibernateUtils工具类

package com.fei.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sf; // 为保证一个应用只有一个SessionFactory对象
static {
// 1.创建并读取指定配置文件,空参默认加载src路径下的名为hibernate.cfg.xml
Configuration conf = new Configuration().configure();
// 2.根据配置信息,创建SessionFactory对象
sf = conf.buildSessionFactory();
} // 获得全新session
public static Session openSession() {
// 3.获得新的session对象并返回
return sf.openSession();
} // 获得与线程绑定的session
public static Session getCurrentSession() {
// 3.获得与线程绑定的session对象并返回
return sf.getCurrentSession();
} }

最新文章

  1. MAC下配置WebDav
  2. 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)
  3. livequery源码解读
  4. [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
  5. HDOJ2011多项式求和
  6. mpich2 下运行时出现“由于目标计算机积极拒绝,无法连接”的错误
  7. HDU1548:A strange lift(Dijkstra或BFS)
  8. App Extensions篇之Share Extension
  9. 那些年,我们不懂的却又不得不提的 JAVA异常和异常处理!
  10. RDC去省赛玩前の日常训练 Chapter 1
  11. 浅谈编程语言中的新宠Python,你叫它如何不火?
  12. java.lang.UnsatisfiedLinkError解决方法汇集(转载)
  13. HTTP长连接--Keep-Alive
  14. .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式
  15. Static,重载,List的知识点
  16. Linux中安装硬盘后对硬盘的分区以及挂载
  17. 利用git 进行多人协作开发
  18. 通过nginx中转获取不到IP的问题解决
  19. Linux设置时间
  20. alias 设置别名

热门文章

  1. C#通过文件头判断文件的类型(不是后缀名)
  2. form submission
  3. wget下载简单语法
  4. 131、TensorFlow保存模型
  5. 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用
  6. poj1065Wooden Sticks(dp——最长递减数列)
  7. Deepin 下开启SSH远程登陆
  8. tp增删改查
  9. mysql解析json字符串相关问题
  10. Java常见问题收集