Hibernate的检索方式(1)
2016-03-30 10:16
211 查看
1:Hibernate
提供了以下几种检索对象的方式
(1)HQL检索方式:
使用面向对象的 HQL
查询语言
l HQL(Hibernate Query Language) 是面向对象的查询语言
l HQL语句的检索方式与SQL语句的区别
* HQL是面向对象和对象中的属性
* SQL是面向过程(面向数据库表和表中的列)
(2)QBC
检索方式:
使用 QBC(Query By Criteria) API
来检索对象.
(3)SQL
检索方式:
使用本地数据库的 SQL
查询语句
Hql查询
[b](1)条件查询[/b]Query query = session.createQuery("from Customer o where o.name='Tom'");
List<Customer> list = query.list();//list()方法返回0到多条记录
[b](2)排序(使用与sql)[/b]
Query query = session.createQuery("from Customer c order by c.id desc
4000
");
List<Customer> list = query.list();
[b](3)别名查询:[/b]
通过HQL检索一个类的实例时,如果查询语句的其他地方需要引用它,
应该为这个类指定一个别名
from Customer as c where c.name=:custname
as 可省略
[b](4)多态查询:[/b]
//查询出所有的实体(当前类和所有子类的实例)
Query query = session.createQuery(“from Customer”);
query.list();
//检索出所有实现serializable接口的实例
Query query = session.createQuery(“ from java.io.Serializable”)
query.list();
//检索出所有的持久化对象
Query query = session.createQuery(“ from java.lang.Object”)
query.list();
[b](5)分页:[/b]
l 分页查询:
• setFirstResult(int firstResult): 设定从哪一个对象开始检索,
参数 firstResult
表示这个对象在查询结果中的索引位置,
索引位置的起始值为 0.
默认情况下, Query
从查询结果中的第一个对象开始检索
• setMaxResult(int maxResults): 设定一次最多检索出的对象的数目.
在默认情况下, Query
和 Criteria
接口检索出查询结果中所有的对象
Query query = session.createQuery("from Order o order by o.id desc");
//第一页
//query.setFirstResult(0);//表示从第一条开始检索,0表示1
//query.setMaxResults(10);//表示当前页最多显示多少条记录
//第二页
//query.setFirstResult(10);//表示从第一条开始检索,0表示1
//query.setMaxResults(10);//表示当前页最多显示多少条记录
//第三页
query.setFirstResult(20);//表示从第一条开始检索,0表示1
query.setMaxResults(10);//表示当前页最多显示多少条记录
List<Order> list = query.list();
tx.commit();
s.close();
[b](6)惟一结果集[/b]
Query query = session.createQuery("from Customer c order by c.id");
query.setMaxResults(1);//做多返回几条记录
Customer
c = (Customer)query.uniqueResult();//返回0到1条数据
[b](7)参数绑定[/b]
hql 查询:使用setString/setInteger
方式一:指定名称参数绑定
Query query = session.createQuery("from Customer c where " +
" c.name=:custname and c.age=:custage");
//第一个参数代表名字,第二个参数代表值
query.setString("custname", "Tom");
query.setInteger("custage", 21);
List list = query.list();
方式二:指定参数的位置绑定
Query query = session.createQuery("from Customer c
where c.name=? and c.age=?");
query.setString(0,"Tom");
query.setInteger(1, 21);
query.list();
Hql查询:使用setParameter
方式一:指定名称参数绑定
Query query = session.createQuery("from Customer c where c.name=:customerName and
c.age=:customerAge");
query.setParameter("custermName", "Tom");
query.setParameter("customerAge",
21);
List<Customer> list = query.list();
方式二:指定参数的位置绑定
Query query = s.createQuery("from Customer c where c.name=? and c.age=?");
query.setParameter(0,
"Tom");
query.setParameter(1,
21);
List<Customer> list = query.list();
[b](8)在映射文件中定义命名查询语句[/b]
<class>
.......
</class>
<query name="findCustomersByName">
<![CDATA[from Customer c where c.name like ?]]>
</query>
------------------------------------------------------------------
Query
query = session.getNamedQuery(“findCustomersByName”);
query.setString(0,”%T%”);
query.list();
相关文章推荐
- 你应该学习哪种编程语言?
- [转]我们需要一种其他人能使用的编程语言
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#中面向对象编程机制之多态学习笔记
- 浅谈Lua的面向对象特性
- Lua面向对象之类和继承浅析
- JavaScript面向对象的两种书写方法以及差别
- 浅谈c# 面向对象之类与对象
- sql2008 hql语句翻译过来的分页语句介绍
- C#面向对象特征的具体实现及作用详解
- C# 面向对象的基本原则
- 浅谈对c# 面向对象的理解
- C#语言主要特性总结
- C语言中static的作用及C语言中使用静态函数有何好处
- Ruby面向对象编程详解
- C# 面向对象三大特性:封装、继承、多态
- php学习 面向对象 课件第1/2页
- PHP程序61条面向对象分析设计的经验小结
- PHP检测用户语言的方法
- 收集学习asp.net比较完整的面向对象开发流程