Hibernate提供的各种查询方式
2016-04-10 17:02
302 查看
一:HQL查询
HQL查询与SQL查询区别:SQL: (结构化查询语句)查询的是表以及字段; 不区分大小写。
HQL: hibernate query language 即hibernate提供的面向对象的查询语言,查询的是对象以及对象的属性。区分大小写。
二:Criteria查询(Query by Criteria)
完全面向对象的查询方式三:本地SQL查询
复杂的查询,就要使用原生态的sql查询,也可以,就是本地sql查询的支持!(缺点:不能跨数据库平台!)
public class TestHibernateQuery { private static SessionFactory sf; static { // 创建sf对象 sf = new Configuration().configure().buildSessionFactory(); } <span style="color:#cc0000;">//HQL查询 【适合有数据库基础的】</span> @Test public void testQuery() throws Exception { Session session = sf.openSession(); Transaction tx = session.beginTransaction(); // 主键查询 //Employee emp = (Employee) session.get(Employee.class, 1); // HQL查询,查询全部 Query q = session.createQuery("from Employee where empId=1 or empId=2"); List<Employee> list = q.list(); System.out.println(list); tx.commit(); session.close(); } <span style="color:#cc0000;">//QBC查询 , query by criteria 完全面向对象的查询</span> @Test public void testQBC() throws Exception { Session session = sf.openSession(); Transaction tx = session.beginTransaction(); Criteria criteria = session.createCriteria(Employee.class); // 条件 criteria.add(Restrictions.eq("empId", 1)); // 查询全部 List<Employee> list = criteria.list(); System.out.println(list); tx.commit(); session.close(); } <span style="color:#cc0000;">//sQL</span> @Test public void testSQL() throws Exception { Session session = sf.openSession(); Transaction tx = session.beginTransaction(); // 把每一行记录封装为对象数组,再添加到list集合 // SQLQuery sqlQuery = session.createSQLQuery("select * from employee"); // 把每一行记录封装为 指定的对象类型 SQLQuery sqlQuery = session.createSQLQuery("select * from employee").addEntity(Employee.class); List list = sqlQuery.list(); System.out.println(list); tx.commit(); session.close(); } }
相关文章推荐
- 【安卓网络请求开源框架Volley源码解析系列】初识Volley及其基本用法
- 2016. 4.10 NOI codevs 动态规划练习
- 20145230java实验报告1
- Linux开发点点滴滴
- Java并发编程系列之二十八:CompletionService
- 响应式布局初设(二)
- Oracle跨表空间导出导入数据
- 使用vs2010创建WebService发布测试
- android <merge>标签的使用
- 流式计算产品对比(Storm、Trident、Spark Streaming、Flink)
- NOJ1008-第几天
- 批量处理更改文件名字
- Broadcom里的俗世奇葩
- Leetcode - Count and Say
- 关于重建二叉树问题已经二叉树前序排列和中序排列求二叉树
- CocoaPods使用详细说明
- Jdk的安装及配置
- ubuntu中用python把文件的编码改成utf8
- 使用python对redis操作
- Android Studio 入门