C(Create): session.save, session.saveOrUpdate,session.persist
U(Update): session.update, session.saveOrUpdate
D(Delete): session.delete
R(Retrive): session.get : 通过ID属性值,query.getResultList()
1.HQL语言
2.Query接口
1.HQL概念:Hibernate Query Languange,是一个查询持久对象的语言。
2.功能:针对持久类和属性查询。
与SQL的查询语句语法相同。
1.功能:指定查询的对象的类别
2.语法:
from Model类名
from Model类名 别名
from Model类名 as 别名
案例:
String hql="from BehaveModel ";
String hql="from BehaveModel bm";
String hql="from BehaveModel as bm";
1.功能:对查询出的对象进行筛选
2.语法:
where 逻辑表达式
3.常见的表达式:
(1)比较运算:
=, >, <, >=, <=, !=, <>
(2)逻辑运算:
and or not
String hql="from EmployeeModel em where em.age>=20 and em.age<=40";
(3)区间运算:
between … and … , not between … and …
案例:
from EmployeeModel em where em.age between20 and 40
from EmployeeModel em where em.age not between20 and 40
(4)模糊运算
like 匹配符, not like 匹配符
案例:
from EmployeeModel em where em.name like '%国%'
from EmployeeModel em where em.name not like '%国_'
(5)集合运算:
in (集合), not in (集合)
案例:
from EmployeeModel em where em.age in (20,30,40)
(6)空运算
is null, is not null, is empty, is not empty
案例:
from EmployeeModel em where em.behaves is empty
from EmployeeModel em where em.behaves is not empty
1.Query对象的取得:
类型:org.hibernate.query.Query 新版
org.hibernate.Query 旧版
语法:
Query query=session.createQuery(hql,T.class);
案例:
Query query=session.createQuery(hql,BehaveModel.class);
2.常用的方法:
(1)执行HQL返回对象集合
List list=query.getResultList(); //新版
List list=query.list(); //旧版
案例:
List list=query.getResultList();
(2) 执行HQL返回单个对象
T result=query.uniqueResult();
(3)设置HQL参数的方法:
HQL参数类型:
<1>位置参数:
在HQL中使用?,位置从0开始。
from EmployeeModel em where em.age between ? and ?
<2>命名参数:
在HQL中使用 :参数名
from EmployeeModel em where em.age between :min and :max
Query设置参数值方法:
旧版:
query.setXxx(int 位置,Xxx 值); //设置位置参数
query.setXxx(String name,Xxx 值); //设置命名参数
query.setInteger(0, min);
query.setInteger(1, max);
query.setInteger("min", min);
query.setInteger("max", max);
新版:
query.setParameter(int 位置,Xxx 值); //设置位置参数
query.setParameter(String 参数名,Xxx 值); //设置命名参数
(4)设置返回结果位置和个数方法
设定结果的起始位置,从0开始。
query.setFirstResult(int 位置);
设置返回的个数
query.setMaxResults(int 个数);