Hibernate中具有三种检索方式(HQL,QBC,SQL)

Query接口

一个查询接口,用于向数据库中查询对象。并控制执行查询的过程。Query接口内封装了一个HQL查询语句。

举个栗子

//查询持久化类user

Session session = sessionFactory.openSession();   //创建session实例
String hql ="from user as u where age>18";    //HQL语句,as别名可以省略不写
Query query = session.createQuery(hql);//创建query实例
List users = query.list();// 返回list集合

  HQL运算符大致上与SQL的相似

= 等于 <> 不等于
> 大于 < 小于
>= 大于等于 <= 小于等于
is null 值为空 is not unll 值不为空
in 等于列表中的某一个值 no in 不等于列表中的某一个值
between 在两个值之间 no between 不在两个值之间
like 字符串匹配 and 逻辑与
or 逻辑或 not 逻辑非

查询所有

from+实体类名

Query query =session.createQuery(from User);
Liset<User> list = query.list();

  

条件查询

from +实体类名 +where 实体类名属性名 ?

Query query =session.createQuery(from User u where u.id=? and u.name=?);
query.setParameter(1,5);
query.setParameter(2,"小明");//向问号里面设置值,有几个问号设置几个
List<User> list = query.list();

排序查询

from 实体类 order by 实体类属性 asc(升)或者desc(降)

分页查询

mysql实现分页 limit关键字,而在hql中语句中不能写limit所有我们得用hibernate的query对象封装的两个类实现分页

Query query = session.createQuery(User);
//设置开始位置
query.setFirstResult(0);
//设置结束位置
query.setMaxResults(3);

投影查询

select 实体类属性名 1 ,实体类名2   from +实体类名

聚集函数查询

聚集函数 count记录数  , sum 相加, avg 平均, max  最大 ,min  最小

select count(*) from 实体类名

更新

使用executeUodate()方法

String hql ="update User set age=23 where age = 20"
Query query = session.createQuery(hql);
query.executeUpdate();

删除

通过使用executeUodate()方法也可以实现删除

String hql ="delete from User where age 20"
Query query = session.createQuery(hql);
query.executeUpdate();

  ps:HQL语句它采用的面向对象的查询方式,并提供了丰富和灵活的查询特征,hibernate中将HQL作为官方推荐的标准查询方式。

下节:另外一种数据查询接口-----Criteria接口(QBC)

Hibernate学习笔记(5)---Query接口的更多相关文章

  1. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  2. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  3. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  4. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Java学习笔记之---比较接口与抽象类

    Java学习笔记之---比较接口与抽象类 抽象类是描述事物的本质,接口是描述事物的功能 接口与抽象类的异同 1.一个类只能继承一个父类,但是可以有多个接口 2.抽象类中的抽象方法没有方法体,但是可以有 ...

  7. Hibernate学习笔记

    一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...

  8. Hibernate学习笔记(五)—— Hibernate查询方式

    一.对象图导航查询 对象图导航查询方式是根据已经加载的对象,导航到他的关联对象.它利用类与类之间的关系来查询对象.比如要查找一个联系人对应的客户,就可以由联系人对象自动导航找到联系人所属的客户对象.当 ...

  9. Hibernate学习笔记(二)—— 实体规则&对象的状态&一级缓存

    一.持久化类 1.1 什么是持久化类? Hibernate是持久层的ORM映射框架,专注于数据的持久化工作.所谓的持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么是持久化,什么又是持 ...

随机推荐

  1. Python字符串和日期相互转换的方法

    import time,datetime # 日期转换成字符串 print time.strftime("%Y-%m-%d %X", time.localtime()) #字符串转 ...

  2. Scala入门系列(十三):类型参数

    引言 Scala中类型参数是什么呢?其实就类似于Java中的泛型.定义一种类型参数,比如在集合.类.函数中定义类型参数,然后就可以保证使用到该类型参数的地方就只能是这种类型,从而实现程序更好的健壮性. ...

  3. 编码中的setCharacterEncoding 理解<转自-fancychendong>

    1.pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码. 2.contentType="text/html;charset=UTF ...

  4. [Phonegap+Sencha Touch] 移动开发24 打包wp8.1的App,执行时输入框聚焦弹出软键盘之后,界面上移而不恢复原位的解决的方法

    这个现象仅仅出如今phonegap打包sencha touch的wp8.1程序会出现(仅wp8.1,wp8正常),其他js框架我測试了几个(app framework, jquery mobile), ...

  5. NYOJ 480 Fibonacci Again!

    Fibonacci Again! 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 求第n个斐波那契数是否是一个素数,n为整数 f[n]=f[n-1]+f[n-2] ( ...

  6. win7中用 httplistener 出现 503 错误的问题

    项目中须要用httplistener提供一个简单的httpserver服务.可是执行都是提示: UnHandledException Message:拒绝訪问 在System.Net.HttpList ...

  7. Java的单例模式

    单例模式:单例模式确保其一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式又分为:懒汉式,饿汉式等; 特点: a.单例只有一个实例. b.必须自己创建自己唯一的实例 c.单例类必须 ...

  8. gulp的基本用法

    这几天简单的研究了一下gulp的用法,gulp对于初学者来说还是很友好的. 官方给出gulp的优点如下: 1.通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理. 2.Gulp 严格 ...

  9. redis的sorted set类型

    1.简单描述 和set类型一样,sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score.sorted set的实现是skip list和hash ...

  10. jenkins学习之多项目构建

    多项目构建,即指的是同时构建多个源代码中的项目,我所知道的有两种方法,一种是在某个项目“构建完成后操作”中设置如下: 另外一种是借助于插件——Multijob plugin,如下: 使用方法其实比较简 ...