HQL和Criteria
HQL和Criteria
HQL(Hibernate Query Language)
面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;HQL主要通过Query来操作,Query的创建方式:
Queryq = session.createQuery(hql);
l from Person
l from User user whereuser.name=:name
l from User user where user.name=:nameand user.birthday < :birthday
Criteria
Criteria是一种比HQL更面向对象的查询方式;Criteria的创建方式:
Criteriacrit = session.createCriteria(DomainClass.class);
简单属性条件如:criteria.add(Restrictions.eq(propertyName,value)),
criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))
利用name的不同的查询
1、 HQL
Session s=null;
try{
s=HibernateUtil.getSession();
//from Useruser 给User起一个别名为user. name表示的是类中的属性名
//fromObject 查得是所有表格中的记录行,from User 查得是User所对应表中的所有记录行
String queryString="from User user where user.name=:n";//查询字符串,hibernate的查询语言hql。类名区分大小写
Query query=s.createQuery(queryString);//产生query对象,用来查询
// query.setString(0, name);//下标从0开始
query.setString("n", name);//用命名参数,就不需要索引下标的位置了
//实现分页查询
query.setFirstResult(0);//从第0行开始
query.setMaxResults(2);//每页最多显示2条记录
/*query.list();//列出所有满足条件的结果集
query.uniqueResult();//返回的是一行的结果集*/
//如果满足条件的不止一条记录
List<User> list=query.list();
for(User u:list){
System.out.println(u.getId()+":"+u.getName());
}
//如果明确知道就一行
/*Useruser=(User) query.uniqueResult();
System.out.println(user.getId()+":"+user.getName());*/
}finally{
if(s!=null){
s.close();
}
}
2、 Criteria
Session s=null;
try{
s=HibernateUtil.getSession();
Criteria c=s.createCriteria(User.class);//根据映射类型去查表
c.add(Restrictions.eq("name", name));//添加的是约束条件,user里面的name属性要等于参数name
// c.add(Restrictions.le("birthday", value));//生日要小于等于。。。。。。
//上面的两句话等价于Criteria c=s.createCriteria(User.class).c.add(Restrictions.eq("name",name));
List<User> list=c.list();
for(User user:list){
System.out.println(user.getId()+":"+user.getName()+":"+user.getBirthday());
}
}finally{
if(s!=null){
s.close();
}
}
sql查得是表,HQl查得是对象,hql支持多态
HQL和Criteria相关推荐
- java jpa hibernate_java - JPA和Hibernate - Criteria与JPQL或HQL
java - JPA和Hibernate - Criteria与JPQL或HQL 使用Criteria或HQL有哪些优缺点? Criteria API是一种很好的面向对象的方式来表达Hibernate ...
- Hibernate 学习笔记(二)—— Hibernate HQL查询和 QBC 查询
目录 一.Hibernate 的 HQL 查询 1.1.查询所有数据 1.2.条件查询 1.3.排序查询 1.4.统计查询 1.5.分页查询 1.6.投影查询 二.Hibernate 的 QBC 查询 ...
- Hibernate之Criteria查询
Hibernate中提供了三种查询方式,分别为HQL.Criteria查询.本地化SQL查询,实际应用中,有很多人忽略了Criteria的用处,觉得不如另外两种贴近SQL方式便捷,实际则未必,很多情况 ...
- JPA和Hibernate-条件与JPQL或HQL
本文翻译自:JPA and Hibernate - Criteria vs. JPQL or HQL What are the pros and cons of using Criteria or H ...
- HQL语句的基本语法和使用
HQL查询 Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性 ,因此 H ...
- Criteria的用法
一.Hibernate提供了5种检索对象的方式 1.导航对象图检索方式:根据已经加载的对象导航到其他对象 from Emp e group by e.dept.deptName 2.OID检索 ...
- Hibernate-day04
HIbernate中的HQL查询 Hibernate中的查询方式: 1,使用HQL:使用hibernate提供的面向对象的查询语句; 2,使用SQL:在hibernate中允许使用原生的SQL直接查询 ...
- NHibernate学习系列一
NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映 ...
- Hibernate Shards 数据的水平、垂直切割(二)- Hibernate Shards基本演示
准备 1. 以Hibernate Shards 数据的水平.垂直切割(一)- Hibernate测试环境的项目为基础 2. Hibernate Shards使用了commons logging,下载个 ...
最新文章
- hive同时不包含一些字符串_Hive中常用的字符串操作
- P2473 [SCOI2008]奖励关
- 通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能
- RHCE实验室NTP时间服务器配置最终版
- 指向二维数组的指针测试
- 谷歌android go 销量,谷歌Android Go进入尴尬期:目前仅十多个App专门适配
- RPC框架实现思路浅析
- ChemDraw 15支持哪些输入格式
- Kubernetes集群部署1
- 计算机系统应用技术课程,基于protégé的课程内容本体的构建-计算机系统应用.pdf...
- idea解决tomcat控制台中文乱码问题
- 设置电脑开机自启动软件,exe/jar均可
- RouterOS利用(L2TP)实现异地组网
- acpi_hardware_id可以通过HID/CLD/UID/CLS/method/path获得
- 用c语言寸件照换底颜色,怎么给证件照换底色【使用步骤】
- 外贸常用术语_外贸常用术语大全
- HDLBits刷题全记录(五)
- 梅捷计算机主板价格,梅捷H81亲民主板逆袭!新到货仅售499元
- 绿联USB4扩展坞,VL830拆解分析
- zip gzip 7z 简单比较